home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / plain / contrib / mnras / mn.tex < prev    next >
Encoding:
Text File  |  1994-09-07  |  85.4 KB  |  3,035 lines

  1. % MN.TEX (Computer Modern version)
  2. %
  3. % plain TeX single / double column macros for the
  4. % Monthly Notices of Royal Astronomical Society
  5. %
  6. % v1.5  (mn.tex)  --- released 25th August 1994 (M. Reed)
  7. % v1.4      "     --- released 22nd February 1994
  8. % v1.3  (mnd.tex) --- released 28th November 1992
  9. % v1.26     "     --- released  1st August 1992
  10. % v1.25     "     --- released 25th February 1992
  11. %
  12. % Copyright Cambridge University Press
  13. %
  14. % > Incorporating special symbol code from laa.sty v1.1 (25th Feb 1991)
  15. %   used with the permission of Springer Verlag.
  16. % > Incorporating parts of mssymb.tex (8th July 1987).
  17. % > Incorporating NewFont.sty v ALPHA patchlevel 8 (16th August 1994).
  18.  
  19. \catcode `\@=11 % @ signs are letters
  20.  
  21. \def\@version{1.5}
  22. \def\@verdate{25th Aug 1994}
  23.  
  24.  
  25. % Fonts: Computer Modern / Monotype Times (CUP only)
  26. %
  27. % Font family sizes available:
  28. %   8pt, 9pt, 10pt, 11pt, 14pt and 17pt.
  29. %
  30. % Faces available:
  31. %   \rm, math italic, symbol, \it, \bf, \sl, \tt, \sc, \sf, \cal, \em,
  32. %   \mit and \oldstyle.
  33.  
  34. % define the typeface in use
  35.  
  36. \newif\ifprod@font
  37.  
  38. \ifx\@typeface\undefined
  39.   \def\@typeface{Comp. Modern}\prod@fontfalse
  40. \else
  41.   \prod@fonttrue % We want Times
  42. \fi
  43.  
  44. \def\newfam{\alloc@8\fam\chardef\sixt@@n} % made not outer
  45.  
  46. \ifprod@font
  47. %
  48. \font\fiverm=mtr10 at 5pt
  49. \font\fivebf=mtbx10 at 5pt
  50. \font\fiveit=mtti10 at 5pt
  51. \font\fivesl=mtsl10 at 5pt
  52. \font\fivett=cmtt8 at 5pt     \hyphenchar\fivett=-1
  53. \font\fivecsc=mtcsc10 at 5pt
  54. \font\fivesf=mtss10 at 5pt
  55. \font\fivei=mtmi10 at 5pt      \skewchar\fivei='177
  56. \font\fivesy=mtsy10 at 5pt     \skewchar\fivesy='60
  57.  
  58. \font\sixrm=mtr10 at 6pt
  59. \font\sixbf=mtbx10 at 6pt
  60. \font\sixit=mtti10 at 6pt
  61. \font\sixsl=mtsl10 at 6pt
  62. \font\sixtt=cmtt8 at 6pt      \hyphenchar\sixtt=-1
  63. \font\sixcsc=mtcsc10 at 6pt
  64. \font\sixsf=mtss10 at 6pt
  65. \font\sixi=mtmi10 at 6pt       \skewchar\sixi='177
  66. \font\sixsy=mtsy10 at 6pt      \skewchar\sixsy='60
  67.  
  68. \font\sevenrm=mtr10 at 7pt
  69. \font\sevenbf=mtbx10 at 7pt
  70. \font\sevenit=mtti10 at 7pt
  71. \font\sevensl=mtsl10 at 7pt
  72. \font\seventt=cmtt8 at 7pt     \hyphenchar\seventt=-1
  73. \font\sevencsc=mtcsc10 at 7pt
  74. \font\sevensf=mtss10 at 7pt
  75. \font\seveni=mtmi10 at 7pt      \skewchar\seveni='177
  76. \font\sevensy=mtsy10 at 7pt     \skewchar\sevensy='60
  77.  
  78. \font\eightrm=mtr10 at 8pt
  79. \font\eightbf=mtbx10 at 8pt
  80. \font\eightit=mtti10 at 8pt
  81. \font\eighti=mtmi10 at 8pt      \skewchar\eighti='177
  82. \font\eightsy=mtsy10 at 8pt     \skewchar\eightsy='60
  83. \font\eightsl=mtsl10 at 8pt
  84. \font\eighttt=cmtt8             \hyphenchar\eighttt=-1
  85. \font\eightcsc=mtcsc10 at 8pt
  86. \font\eightsf=mtss10 at 8pt
  87.  
  88. \font\ninerm=mtr10 at 9pt
  89. \font\ninebf=mtbx10 at 9pt
  90. \font\nineit=mtti10 at 9pt
  91. \font\ninei=mtmi10 at 9pt      \skewchar\ninei='177
  92. \font\ninesy=mtsy10 at 9pt     \skewchar\ninesy='60
  93. \font\ninesl=mtsl10 at 9pt
  94. \font\ninett=cmtt9             \hyphenchar\ninett=-1
  95. \font\ninecsc=mtcsc10 at 9pt
  96. \font\ninesf=mtss10 at 9pt
  97.  
  98. \font\tenrm=mtr10
  99. \font\tenbf=mtbx10
  100. \font\tenit=mtti10
  101. \font\teni=mtmi10        \skewchar\teni='177
  102. \font\tensy=mtsy10        \skewchar\tensy='60
  103. \font\tenex=cmex10
  104. \font\tensl=mtsl10
  105. \font\tentt=cmtt10        \hyphenchar\tentt=-1
  106. \font\tencsc=mtcsc10
  107. \font\tensf=mtss10
  108.  
  109. \font\elevenrm=mtr10 at 11pt
  110. \font\elevenbf=mtbx10 at 11pt
  111. \font\elevenit=mtti10 at 11pt
  112. \font\eleveni=mtmi10 at 11pt      \skewchar\eleveni='177
  113. \font\elevensy=mtsy10 at 11pt     \skewchar\elevensy='60
  114. \font\elevensl=mtsl10 at 11pt
  115. \font\eleventt=cmtt10 at 11pt     \hyphenchar\eleventt=-1
  116. \font\elevencsc=mtcsc10 at 11pt
  117. \font\elevensf=mtss10 at 11pt
  118.  
  119. \font\twelverm=mtr10 at 12pt
  120. \font\twelvebf=mtbx10 at 12pt
  121. \font\twelveit=mtti10 at 12pt
  122. \font\twelvesl=mtsl10 at 12pt
  123. \font\twelvett=cmtt12             \hyphenchar\twelvett=-1
  124. \font\twelvecsc=mtcsc10 at 12pt
  125. \font\twelvesf=mtss10 at 12pt
  126. \font\twelvei=mtmi10 at 12pt      \skewchar\twelvei='177
  127. \font\twelvesy=mtsy10 at 12pt     \skewchar\twelvesy='60
  128.  
  129. \font\fourteenrm=mtr10 at 14pt
  130. \font\fourteenbf=mtbx10 at 14pt
  131. \font\fourteenit=mtti10 at 14pt
  132. \font\fourteeni=mtmi10 at 14pt      \skewchar\fourteeni='177
  133. \font\fourteensy=mtsy10 at 14pt     \skewchar\fourteensy='60
  134. \font\fourteensl=mtsl10 at 14pt
  135. \font\fourteentt=cmtt12 at 14pt     \hyphenchar\fourteentt=-1
  136. \font\fourteencsc=mtcsc10 at 14pt
  137. \font\fourteensf=mtss10 at 14pt
  138.  
  139. \font\seventeenrm=mtr10 at 17pt
  140. \font\seventeenbf=mtbx10 at 17pt
  141. \font\seventeenit=mtti10 at 17pt
  142. \font\seventeeni=mtmi10 at 17pt      \skewchar\seventeeni='177
  143. \font\seventeensy=mtsy10 at 17pt     \skewchar\seventeensy='60
  144. \font\seventeensl=mtsl10 at 17pt
  145. \font\seventeentt=cmtt12 at 17pt     \hyphenchar\seventeentt=-1
  146. \font\seventeencsc=mtcsc10 at 17pt
  147. \font\seventeensf=mtss10 at 17pt
  148. %
  149. \else
  150. %
  151. \font\fiverm=cmr5
  152. \font\fivei=cmmi5             \skewchar\fivei='177
  153. \font\fivesy=cmsy5            \skewchar\fivesy='60
  154. \font\fivebf=cmbx5
  155.  
  156. \font\sixrm=cmr6
  157. \font\sixi=cmmi6             \skewchar\sixi='177
  158. \font\sixsy=cmsy6            \skewchar\sixsy='60
  159. \font\sixbf=cmbx6
  160.  
  161. \font\sevenrm=cmr7
  162. \font\sevenit=cmti7
  163. \font\seveni=cmmi7             \skewchar\seveni='177
  164. \font\sevensy=cmsy7            \skewchar\sevensy='60
  165. \font\sevenbf=cmbx7
  166.  
  167. \font\eightrm=cmr8
  168. \font\eightbf=cmbx8
  169. \font\eightit=cmti8
  170. \font\eighti=cmmi8            \skewchar\eighti='177
  171. \font\eightsy=cmsy8            \skewchar\eightsy='60
  172. \font\eightsl=cmsl8
  173. \font\eighttt=cmtt8            \hyphenchar\eighttt=-1
  174. \font\eightcsc=cmcsc10 at 8pt
  175. \font\eightsf=cmss8
  176.  
  177. \font\ninerm=cmr9
  178. \font\ninebf=cmbx9
  179. \font\nineit=cmti9
  180. \font\ninei=cmmi9            \skewchar\ninei='177
  181. \font\ninesy=cmsy9            \skewchar\ninesy='60
  182. \font\ninesl=cmsl9
  183. \font\ninett=cmtt9            \hyphenchar\ninett=-1
  184. \font\ninecsc=cmcsc10 at 9pt
  185. \font\ninesf=cmss9
  186.  
  187. \font\tenrm=cmr10
  188. \font\tenbf=cmbx10
  189. \font\tenit=cmti10
  190. \font\teni=cmmi10        \skewchar\teni='177
  191. \font\tensy=cmsy10        \skewchar\tensy='60
  192. \font\tenex=cmex10
  193. \font\tensl=cmsl10
  194. \font\tentt=cmtt10        \hyphenchar\tentt=-1
  195. \font\tencsc=cmcsc10
  196. \font\tensf=cmss10
  197.  
  198. \font\elevenrm=cmr10 scaled \magstephalf
  199. \font\elevenbf=cmbx10 scaled \magstephalf
  200. \font\elevenit=cmti10 scaled \magstephalf
  201. \font\eleveni=cmmi10 scaled \magstephalf    \skewchar\eleveni='177
  202. \font\elevensy=cmsy10 scaled \magstephalf    \skewchar\elevensy='60
  203. \font\elevensl=cmsl10 scaled \magstephalf
  204. \font\eleventt=cmtt10 scaled \magstephalf    \hyphenchar\eleventt=-1
  205. \font\elevencsc=cmcsc10 scaled \magstephalf
  206. \font\elevensf=cmss10 scaled \magstephalf
  207.  
  208. \font\twelverm=cmr10 scaled \magstep1
  209. \font\twelvebf=cmbx10 scaled \magstep1
  210. \font\twelvei=cmmi10 scaled \magstep1      \skewchar\twelvei='177
  211. \font\twelvesy=cmsy10 scaled \magstep1     \skewchar\twelvesy='60
  212.  
  213. \font\fourteenrm=cmr10 scaled \magstep2
  214. \font\fourteenbf=cmbx10 scaled \magstep2
  215. \font\fourteenit=cmti10 scaled \magstep2
  216. \font\fourteeni=cmmi10 scaled \magstep2        \skewchar\fourteeni='177
  217. \font\fourteensy=cmsy10 scaled \magstep2    \skewchar\fourteensy='60
  218. \font\fourteensl=cmsl10 scaled \magstep2
  219. \font\fourteentt=cmtt10 scaled \magstep2    \hyphenchar\fourteentt=-1
  220. \font\fourteencsc=cmcsc10 scaled \magstep2
  221. \font\fourteensf=cmss10 scaled \magstep2
  222.  
  223. \font\seventeenrm=cmr10 scaled \magstep3
  224. \font\seventeenbf=cmbx10 scaled \magstep3
  225. \font\seventeenit=cmti10 scaled \magstep3
  226. \font\seventeeni=cmmi10 scaled \magstep3    \skewchar\seventeeni='177
  227. \font\seventeensy=cmsy10 scaled \magstep3    \skewchar\seventeensy='60
  228. \font\seventeensl=cmsl10 scaled \magstep3
  229. \font\seventeentt=cmtt10 scaled \magstep3    \hyphenchar\seventeentt=-1
  230. \font\seventeencsc=cmcsc10 scaled \magstep3
  231. \font\seventeensf=cmss10 scaled \magstep3
  232. %
  233. \fi
  234.  
  235. \def\hexnumber#1{\ifcase#1 0\or1\or2\or3\or4\or5\or6\or7\or8\or9\or
  236.   A\or B\or C\or D\or E\or F\fi}
  237.  
  238. \def\makestrut{%
  239.   \setbox\strutbox=\hbox{%
  240.     \vrule height.7\baselineskip depth.3\baselineskip width \z@}%
  241. }
  242.  
  243. \def\baselinestretch{1}
  244. \newskip\tmp@bls
  245.  
  246. \def\b@ls#1{% set baseline using \baselinestretch as a scale factor
  247.   \tmp@bls=#1\relax
  248.   \baselineskip=#1\relax\makestrut
  249.   \normalbaselineskip=\baselinestretch\tmp@bls
  250.   \normalbaselines
  251. }
  252.  
  253. \def\nostb@ls#1{% set baseline skip ignoring \baselinestretch
  254.   \normalbaselineskip=#1\relax
  255.   \normalbaselines
  256.   \makestrut
  257. }
  258.  
  259.  
  260. % families \itfam, \slfam, \bffam, \ttfam defined in PLAIN.
  261. %
  262. % \itfam is \fam4
  263. % \slfam is \fam5
  264. % \bffam is \fam6
  265. % \ttfam is \fam7
  266.  
  267. \newfam\scfam  % \fam8
  268. \newfam\sffam  % \fam9
  269.  
  270. \def\mit{\fam\@ne}
  271. \def\cal{\fam\tw@}
  272. \def\em{\ifdim\fontdimen1\font>\z@ \rm\else\it\fi}
  273.  
  274. \textfont3=\tenex
  275. \scriptfont3=\tenex
  276. \scriptscriptfont3=\tenex
  277.  
  278. \setbox0=\hbox{\tenex B} \p@renwd=\wd0 % width of the big left (
  279.  
  280. \def\eightpoint{% 8^6^5 on 10pt
  281.   \def\rm{\fam0\eightrm}%
  282.   \textfont0=\eightrm \scriptfont0=\sixrm \scriptscriptfont0=\fiverm%
  283.   \textfont1=\eighti  \scriptfont1=\sixi  \scriptscriptfont1=\fivei%
  284.   \textfont2=\eightsy \scriptfont2=\sixsy \scriptscriptfont2=\fivesy%
  285.   \textfont\itfam=\eightit\def\it{\fam\itfam\eightit}%
  286.   \ifprod@font
  287.     \scriptfont\itfam=\sixit
  288.       \scriptscriptfont\itfam=\fiveit
  289.   \else
  290.     \scriptfont\itfam=\eightit
  291.       \scriptscriptfont\itfam=\eightit
  292.   \fi
  293.   \textfont\bffam=\eightbf%
  294.     \scriptfont\bffam=\sixbf%
  295.       \scriptscriptfont\bffam=\fivebf%
  296.   \def\bf{\fam\bffam\eightbf}%
  297.   \textfont\slfam=\eightsl\def\sl{\fam\slfam\eightsl}%
  298.   \ifprod@font
  299.     \scriptfont\slfam=\sixsl
  300.       \scriptscriptfont\slfam=\fivesl
  301.   \else
  302.     \scriptfont\slfam=\eightsl
  303.       \scriptscriptfont\slfam=\eightsl
  304.   \fi
  305.   \textfont\ttfam=\eighttt\def\tt{\fam\ttfam\eighttt}%
  306.   \ifprod@font
  307.     \scriptfont\ttfam=\sixtt
  308.       \scriptscriptfont\ttfam=\fivett
  309.   \else
  310.     \scriptfont\ttfam=\eighttt
  311.       \scriptscriptfont\ttfam=\eighttt
  312.   \fi
  313.   \textfont\scfam=\eightcsc\def\sc{\fam\scfam\eightcsc}%
  314.   \ifprod@font
  315.     \scriptfont\scfam=\sixcsc
  316.       \scriptscriptfont\scfam=\fivecsc
  317.   \else
  318.     \scriptfont\scfam=\eightcsc
  319.       \scriptscriptfont\scfam=\eightcsc
  320.   \fi
  321.   \textfont\sffam=\eightsf\def\sf{\fam\sffam\eightsf}%
  322.   \ifprod@font
  323.     \scriptfont\sffam=\sixsf
  324.       \scriptscriptfont\sffam=\fivesf
  325.   \else
  326.     \scriptfont\sffam=\eightsf
  327.       \scriptscriptfont\sffam=\eightsf
  328.   \fi
  329.   \def\oldstyle{\fam\@ne\eighti}%
  330.   \b@ls{10pt}\rm\@viiipt%
  331. }
  332. \def\@viiipt{}
  333.  
  334. \def\ninepoint{% 9^6^5 on 11pt (two col) / 12 (single col)
  335.   \def\rm{\fam0\ninerm}%
  336.   \textfont0=\ninerm \scriptfont0=\sixrm \scriptscriptfont0=\fiverm%
  337.   \textfont1=\ninei  \scriptfont1=\sixi  \scriptscriptfont1=\fivei%
  338.   \textfont2=\ninesy \scriptfont2=\sixsy \scriptscriptfont2=\fivesy%
  339.   \textfont\itfam=\nineit\def\it{\fam\itfam\nineit}%
  340.   \ifprod@font
  341.     \scriptfont\itfam=\sixit
  342.       \scriptscriptfont\itfam=\fiveit
  343.   \else
  344.     \scriptfont\itfam=\nineit
  345.       \scriptscriptfont\itfam=\nineit
  346.   \fi
  347.   \textfont\bffam=\ninebf%
  348.     \scriptfont\bffam=\sixbf%
  349.       \scriptscriptfont\bffam=\fivebf%
  350.   \def\bf{\fam\bffam\ninebf}%
  351.   \textfont\slfam=\ninesl\def\sl{\fam\slfam\ninesl}%
  352.   \ifprod@font
  353.     \scriptfont\slfam=\sixsl
  354.       \scriptscriptfont\slfam=\fivesl
  355.   \else
  356.     \scriptfont\slfam=\ninesl
  357.       \scriptscriptfont\slfam=\ninesl
  358.   \fi
  359.   \textfont\ttfam=\ninett\def\tt{\fam\ttfam\ninett}%
  360.   \ifprod@font
  361.     \scriptfont\ttfam=\sixtt
  362.       \scriptscriptfont\ttfam=\fivett
  363.   \else
  364.     \scriptfont\ttfam=\ninett
  365.       \scriptscriptfont\ttfam=\ninett
  366.   \fi
  367.   \textfont\scfam=\ninecsc\def\sc{\fam\scfam\ninecsc}%
  368.   \ifprod@font
  369.     \scriptfont\scfam=\sixcsc
  370.       \scriptscriptfont\scfam=\fivecsc
  371.   \else
  372.     \scriptfont\scfam=\ninecsc
  373.       \scriptscriptfont\scfam=\ninecsc
  374.   \fi
  375.   \textfont\sffam=\ninesf\def\sf{\fam\sffam\ninesf}%
  376.   \ifprod@font
  377.     \scriptfont\sffam=\sixsf
  378.       \scriptscriptfont\sffam=\fivesf
  379.   \else
  380.     \scriptfont\sffam=\ninesf
  381.       \scriptscriptfont\sffam=\ninesf
  382.   \fi
  383.   \def\oldstyle{\fam\@ne\ninei}%
  384.   \b@ls{\TextLeading plus \Feathering}\rm\@ixpt%
  385. }
  386. \def\@ixpt{}
  387.  
  388. \def\tenpoint{% 10^7^5 on 11pt
  389.   \def\rm{\fam0\tenrm}%
  390.   \textfont0=\tenrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm%
  391.   \textfont1=\teni  \scriptfont1=\seveni  \scriptscriptfont1=\fivei%
  392.   \textfont2=\tensy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy%
  393.   \textfont\itfam=\tenit\def\it{\fam\itfam\tenit}%
  394.   \ifprod@font
  395.     \scriptfont\itfam=\sevenit
  396.       \scriptscriptfont\itfam=\fiveit
  397.   \else
  398.     \scriptfont\itfam=\tenit
  399.       \scriptscriptfont\itfam=\tenit
  400.   \fi
  401.   \textfont\bffam=\tenbf%
  402.     \scriptfont\bffam=\sevenbf%
  403.       \scriptscriptfont\bffam=\fivebf%
  404.   \def\bf{\fam\bffam\tenbf}%
  405.   \textfont\slfam=\tensl\def\sl{\fam\slfam\tensl}%
  406.   \ifprod@font
  407.     \scriptfont\slfam=\sevensl
  408.       \scriptscriptfont\slfam=\fivesl
  409.   \else
  410.     \scriptfont\slfam=\tensl
  411.       \scriptscriptfont\slfam=\tensl
  412.   \fi
  413.   \textfont\ttfam=\tentt\def\tt{\fam\ttfam\tentt}%
  414.   \ifprod@font
  415.     \scriptfont\ttfam=\seventt
  416.       \scriptscriptfont\ttfam=\fivett
  417.   \else
  418.     \scriptfont\ttfam=\tentt
  419.       \scriptscriptfont\ttfam=\tentt
  420.   \fi
  421.   \textfont\scfam=\tencsc\def\sc{\fam\scfam\tencsc}%
  422.   \ifprod@font
  423.     \scriptfont\scfam=\sevencsc
  424.       \scriptscriptfont\scfam=\fivecsc
  425.   \else
  426.     \scriptfont\scfam=\tencsc
  427.       \scriptscriptfont\scfam=\tencsc
  428.   \fi
  429.   \textfont\sffam=\tensf\def\sf{\fam\sffam\tensf}%
  430.   \ifprod@font
  431.     \scriptfont\sffam=\sevensf
  432.       \scriptscriptfont\sffam=\fivesf
  433.   \else
  434.     \scriptfont\sffam=\tensf
  435.       \scriptscriptfont\sffam=\tensf
  436.   \fi
  437.   \def\oldstyle{\fam\@ne\teni}%
  438.   \b@ls{11pt}\rm\@xpt%
  439. }
  440. \def\@xpt{}
  441.  
  442. \def\elevenpoint{% 11^8^6 on 13pt
  443.   \def\rm{\fam0\elevenrm}%
  444.   \textfont0=\elevenrm \scriptfont0=\eightrm \scriptscriptfont0=\sixrm%
  445.   \textfont1=\eleveni  \scriptfont1=\eighti  \scriptscriptfont1=\sixi%
  446.   \textfont2=\elevensy \scriptfont2=\eightsy \scriptscriptfont2=\sixsy%
  447.   \textfont\itfam=\elevenit\def\it{\fam\itfam\elevenit}%
  448.   \ifprod@font
  449.     \scriptfont\itfam=\eightit
  450.       \scriptscriptfont\itfam=\sixit
  451.   \else
  452.     \scriptfont\itfam=\elevenit
  453.       \scriptscriptfont\itfam=\elevenit
  454.   \fi
  455.   \textfont\bffam=\elevenbf%
  456.     \scriptfont\bffam=\eightbf%
  457.       \scriptscriptfont\bffam=\sixbf%
  458.   \def\bf{\fam\bffam\elevenbf}%
  459.   \textfont\slfam=\elevensl\def\sl{\fam\slfam\elevensl}%
  460.   \ifprod@font
  461.     \scriptfont\slfam=\eightsl
  462.       \scriptscriptfont\slfam=\sixsl
  463.   \else
  464.     \scriptfont\slfam=\elevensl
  465.       \scriptscriptfont\slfam=\elevensl
  466.   \fi
  467.   \textfont\ttfam=\eleventt\def\tt{\fam\ttfam\eleventt}%
  468.   \ifprod@font
  469.     \scriptfont\ttfam=\eighttt
  470.       \scriptscriptfont\ttfam=\sixtt
  471.   \else
  472.     \scriptfont\ttfam=\eleventt
  473.       \scriptscriptfont\ttfam=\eleventt
  474.   \fi
  475.   \textfont\scfam=\elevencsc\def\sc{\fam\scfam\elevencsc}%
  476.   \ifprod@font
  477.     \scriptfont\scfam=\eightcsc
  478.       \scriptscriptfont\scfam=\sixcsc
  479.   \else
  480.     \scriptfont\scfam=\elevencsc
  481.       \scriptscriptfont\scfam=\elevencsc
  482.   \fi
  483.   \textfont\sffam=\elevensf\def\sf{\fam\sffam\elevensf}%
  484.   \ifprod@font
  485.     \scriptfont\sffam=\eightsf
  486.       \scriptscriptfont\sffam=\sixsf
  487.   \else
  488.     \scriptfont\sffam=\elevensf
  489.       \scriptscriptfont\sffam=\elevensf
  490.   \fi
  491.   \def\oldstyle{\fam\@ne\eleveni}%
  492.   \b@ls{13pt}\rm\@xipt%
  493. }
  494. \def\@xipt{}
  495.  
  496. \def\fourteenpoint{% 14^10^7 on 17pt
  497.   \def\rm{\fam0\fourteenrm}%
  498.   \textfont0\fourteenrm  \scriptfont0\tenrm  \scriptscriptfont0\sevenrm%
  499.   \textfont1\fourteeni   \scriptfont1\teni   \scriptscriptfont1\seveni%
  500.   \textfont2\fourteensy  \scriptfont2\tensy  \scriptscriptfont2\sevensy%
  501.   \textfont\itfam=\fourteenit\def\it{\fam\itfam\fourteenit}%
  502.   \ifprod@font
  503.     \scriptfont\itfam=\tenit
  504.       \scriptscriptfont\itfam=\sevenit
  505.   \else
  506.     \scriptfont\itfam=\fourteenit
  507.       \scriptscriptfont\itfam=\fourteenit
  508.   \fi
  509.   \textfont\bffam=\fourteenbf%
  510.     \scriptfont\bffam=\tenbf%
  511.       \scriptscriptfont\bffam=\sevenbf%
  512.   \def\bf{\fam\bffam\fourteenbf}%
  513.   \textfont\slfam=\fourteensl\def\sl{\fam\slfam\fourteensl}%
  514.   \ifprod@font
  515.     \scriptfont\slfam=\tensl
  516.       \scriptscriptfont\slfam=\sevensl
  517.   \else
  518.     \scriptfont\slfam=\fourteensl
  519.       \scriptscriptfont\slfam=\fourteensl
  520.   \fi
  521.   \textfont\ttfam=\fourteentt\def\tt{\fam\ttfam\fourteentt}%
  522.   \ifprod@font
  523.     \scriptfont\ttfam=\tentt
  524.       \scriptscriptfont\ttfam=\seventt
  525.   \else
  526.     \scriptfont\ttfam=\fourteentt
  527.       \scriptscriptfont\ttfam=\fourteentt
  528.   \fi
  529.   \textfont\scfam=\fourteencsc\def\sc{\fam\scfam\fourteencsc}%
  530.   \ifprod@font
  531.     \scriptfont\scfam=\tencsc
  532.       \scriptscriptfont\scfam=\sevencsc
  533.   \else
  534.     \scriptfont\scfam=\fourteencsc
  535.       \scriptscriptfont\scfam=\fourteencsc
  536.   \fi
  537.   \textfont\sffam=\fourteensf\def\sf{\fam\sffam\fourteensf}%
  538.   \ifprod@font
  539.     \scriptfont\sffam=\tensf
  540.       \scriptscriptfont\sffam=\sevensf
  541.   \else
  542.     \scriptfont\sffam=\fourteensf
  543.       \scriptscriptfont\sffam=\fourteensf
  544.   \fi
  545.   \def\oldstyle{\fam\@ne\fourteeni}%
  546.   \b@ls{17pt}\rm\@xivpt%
  547. }
  548. \def\@xivpt{}
  549.  
  550. \def\seventeenpoint{% 17^12^10 on 20pt
  551.   \def\rm{\fam0\seventeenrm}%
  552.   \textfont0\seventeenrm  \scriptfont0\twelverm  \scriptscriptfont0\tenrm%
  553.   \textfont1\seventeeni   \scriptfont1\twelvei   \scriptscriptfont1\teni%
  554.   \textfont2\seventeensy  \scriptfont2\twelvesy  \scriptscriptfont2\tensy%
  555.   \textfont\itfam=\seventeenit\def\it{\fam\itfam\seventeenit}%
  556.   \ifprod@font
  557.     \scriptfont\itfam=\twelveit
  558.       \scriptscriptfont\itfam=\tenit
  559.   \else
  560.     \scriptfont\itfam=\seventeenit
  561.       \scriptscriptfont\itfam=\seventeenit
  562.   \fi
  563.   \textfont\bffam=\seventeenbf%
  564.     \scriptfont\bffam=\twelvebf%
  565.       \scriptscriptfont\bffam=\tenbf%
  566.   \def\bf{\fam\bffam\seventeenbf}%
  567.   \textfont\slfam=\seventeensl\def\sl{\fam\slfam\seventeensl}%
  568.   \ifprod@font
  569.     \scriptfont\slfam=\twelvesl
  570.       \scriptscriptfont\slfam=\tensl
  571.   \else
  572.     \scriptfont\slfam=\seventeensl
  573.       \scriptscriptfont\slfam=\seventeensl
  574.   \fi
  575.   \textfont\ttfam=\seventeentt\def\tt{\fam\ttfam\seventeentt}%
  576.   \ifprod@font
  577.     \scriptfont\ttfam=\twelvett
  578.       \scriptscriptfont\ttfam=\tentt
  579.   \else
  580.     \scriptfont\ttfam=\seventeentt
  581.       \scriptscriptfont\ttfam=\seventeentt
  582.   \fi
  583.   \textfont\scfam=\seventeencsc\def\sc{\fam\scfam\seventeencsc}%
  584.   \ifprod@font
  585.     \scriptfont\scfam=\twelvecsc
  586.       \scriptscriptfont\scfam=\tencsc
  587.   \else
  588.     \scriptfont\scfam=\seventeencsc
  589.       \scriptscriptfont\scfam=\seventeencsc
  590.   \fi
  591.   \textfont\sffam=\seventeensf\def\sf{\fam\sffam\seventeensf}%
  592.   \ifprod@font
  593.     \scriptfont\sffam=\twelvesf
  594.       \scriptscriptfont\sffam=\tensf
  595.   \else
  596.     \scriptfont\sffam=\seventeensf
  597.       \scriptscriptfont\sffam=\seventeensf
  598.   \fi
  599.   \def\oldstyle{\fam\@ne\seventeeni}%
  600.   \b@ls{20pt}\rm\@xviipt%
  601. }
  602. \def\@xviipt{}
  603.  
  604. \lineskip=1pt      \normallineskip=\lineskip
  605. \lineskiplimit=\z@ \normallineskiplimit=\lineskiplimit
  606.  
  607.  
  608. % BOLD MATH SYMBOLS
  609.  
  610. \def\loadboldmathnames{%
  611.   \def\balpha{{\bmath{\alpha}}}%
  612.   \def\bbeta{{\bmath{\beta}}}%
  613.   \def\bgamma{{\bmath{\gamma}}}%
  614.   \def\bdelta{{\bmath{\delta}}}%
  615.   \def\bepsilon{{\bmath{\epsilon}}}%
  616.   \def\bzeta{{\bmath{\zeta}}}%
  617.   \def\boldeta{{\bmath{\eta}}}%
  618.   \def\btheta{{\bmath{\theta}}}%
  619.   \def\biota{{\bmath{\iota}}}%
  620.   \def\bkappa{{\bmath{\kappa}}}%
  621.   \def\blambda{{\bmath{\lambda}}}%
  622.   \def\bmu{{\bmath{\mu}}}%
  623.   \def\bnu{{\bmath{\nu}}}%
  624.   \def\bxi{{\bmath{\xi}}}%
  625.   \def\bpi{{\bmath{\pi}}}%
  626.   \def\brho{{\bmath{\rho}}}%
  627.   \def\bsigma{{\bmath{\sigma}}}%
  628.   \def\btau{{\bmath{\tau}}}%
  629.   \def\bupsilon{{\bmath{\upsilon}}}%
  630.   \def\bphi{{\bmath{\phi}}}%
  631.   \def\bchi{{\bmath{\chi}}}%
  632.   \def\bpsi{{\bmath{\psi}}}%
  633.   \def\bomega{{\bmath{\omega}}}%
  634.   \def\bvarepsilon{{\bmath{\varepsilon}}}%
  635.   \def\bvartheta{{\bmath{\vartheta}}}%
  636.   \def\bvarpi{{\bmath{\varpi}}}%
  637.   \def\bvarrho{{\bmath{\varrho}}}%
  638.   \def\bvarsigma{{\bmath{\varsigma}}}%
  639.   \def\bvarphi{{\bmath{\varphi}}}%
  640.   \def\baleph{{\bmath{\aleph}}}%
  641.   \def\bimath{{\bmath{\imath}}}%
  642.   \def\bjmath{{\bmath{\jmath}}}%
  643.   \def\bell{{\bmath{\ell}}}%
  644.   \def\bwp{{\bmath{\wp}}}%
  645.   \def\bRe{{\bmath{\Re}}}%
  646.   \def\bIm{{\bmath{\Im}}}%
  647.   \def\bpartial{{\bmath{\partial}}}%
  648.   \def\binfty{{\bmath{\infty}}}%
  649.   \def\bprime{{\bmath{\prime}}}%
  650.   \def\bemptyset{{\bmath{\emptyset}}}%
  651.   \def\bnabla{{\bmath{\nabla}}}%
  652.   \def\btop{{\bmath{\top}}}%
  653.   \def\bbot{{\bmath{\bot}}}%
  654.   \def\btriangle{{\bmath{\triangle}}}%
  655.   \def\bforall{{\bmath{\forall}}}%
  656.   \def\bexists{{\bmath{\exists}}}%
  657.   \def\bneg{{\bmath{\neg}}}%
  658.   \def\bflat{{\bmath{\flat}}}%
  659.   \def\bnatural{{\bmath{\natural}}}%
  660.   \def\bsharp{{\bmath{\sharp}}}%
  661.   \def\bclubsuit{{\bmath{\clubsuit}}}%
  662.   \def\bdiamondsuit{{\bmath{\diamondsuit}}}%
  663.   \def\bheartsuit{{\bmath{\heartsuit}}}%
  664.   \def\bspadesuit{{\bmath{\spadesuit}}}%
  665.   \def\bsmallint{{\bmath{\smallint}}}%
  666.   \def\btriangleleft{{\bmath{\triangleleft}}}%
  667.   \def\btriangleright{{\bmath{\triangleright}}}%
  668.   \def\bbigtriangleup{{\bmath{\bigtriangleup}}}%
  669.   \def\bbigtriangledown{{\bmath{\bigtriangledown}}}%
  670.   \def\bwedge{{\bmath{\wedge}}}%
  671.   \def\bvee{{\bmath{\vee}}}%
  672.   \def\bcap{{\bmath{\cap}}}%
  673.   \def\bcup{{\bmath{\cup}}}%
  674.   \def\bddagger{{\bmath{\ddagger}}}%
  675.   \def\bdagger{{\bmath{\dagger}}}%
  676.   \def\bsqcap{{\bmath{\sqcap}}}%
  677.   \def\bsqcup{{\bmath{\sqcup}}}%
  678.   \def\buplus{{\bmath{\uplus}}}%
  679.   \def\bamalg{{\bmath{\amalg}}}%
  680.   \def\bdiamond{{\bmath{\diamond}}}%
  681.   \def\bbullet{{\bmath{\bullet}}}%
  682.   \def\bwr{{\bmath{\wr}}}%
  683.   \def\bdiv{{\bmath{\div}}}%
  684.   \def\bodot{{\bmath{\odot}}}%
  685.   \def\boslash{{\bmath{\oslash}}}%
  686.   \def\botimes{{\bmath{\otimes}}}%
  687.   \def\bominus{{\bmath{\ominus}}}%
  688.   \def\boplus{{\bmath{\oplus}}}%
  689.   \def\bmp{{\bmath{\mp}}}%
  690.   \def\bpm{{\bmath{\pm}}}%
  691.   \def\bcirc{{\bmath{\circ}}}%
  692.   \def\bbigcirc{{\bmath{\bigcirc}}}%
  693.   \def\bsetminus{{\bmath{\setminus}}}%
  694.   \def\bcdot{{\bmath{\cdot}}}%
  695.   \def\bast{{\bmath{\ast}}}%
  696.   \def\btimes{{\bmath{\times}}}%
  697.   \def\bstar{{\bmath{\star}}}%
  698.   \def\bpropto{{\bmath{\propto}}}%
  699.   \def\bsqsubseteq{{\bmath{\sqsubseteq}}}%
  700.   \def\bsqsupseteq{{\bmath{\sqsupseteq}}}%
  701.   \def\bparallel{{\bmath{\parallel}}}%
  702.   \def\bmid{{\bmath{\mid}}}%
  703.   \def\bdashv{{\bmath{\dashv}}}%
  704.   \def\bvdash{{\bmath{\vdash}}}%
  705.   \def\bnearrow{{\bmath{\nearrow}}}%
  706.   \def\bsearrow{{\bmath{\searrow}}}%
  707.   \def\bnwarrow{{\bmath{\nwarrow}}}%
  708.   \def\bswarrow{{\bmath{\swarrow}}}%
  709.   \def\bLeftrightarrow{{\bmath{\Leftrightarrow}}}%
  710.   \def\bLeftarrow{{\bmath{\Leftarrow}}}%
  711.   \def\bRightarrow{{\bmath{\Rightarrow}}}%
  712.   \def\bleq{{\bmath{\leq}}}%
  713.   \def\bgeq{{\bmath{\geq}}}%
  714.   \def\bsucc{{\bmath{\succ}}}%
  715.   \def\bprec{{\bmath{\prec}}}%
  716.   \def\bapprox{{\bmath{\approx}}}%
  717.   \def\bsucceq{{\bmath{\succeq}}}%
  718.   \def\bpreceq{{\bmath{\preceq}}}%
  719.   \def\bsupset{{\bmath{\supset}}}%
  720.   \def\bsubset{{\bmath{\subset}}}%
  721.   \def\bsupseteq{{\bmath{\supseteq}}}%
  722.   \def\bsubseteq{{\bmath{\subseteq}}}%
  723.   \def\bin{{\bmath{\in}}}%
  724.   \def\bni{{\bmath{\ni}}}%
  725.   \def\bgg{{\bmath{\gg}}}%
  726.   \def\bll{{\bmath{\ll}}}%
  727.   \def\bnot{{\bmath{\not}}}%
  728.   \def\bleftrightarrow{{\bmath{\leftrightarrow}}}%
  729.   \def\bleftarrow{{\bmath{\leftarrow}}}%
  730.   \def\brightarrow{{\bmath{\rightarrow}}}%
  731.   \def\bmapstochar{{\bmath{\mapstochar}}}%
  732.   \def\bsim{{\bmath{\sim}}}%
  733.   \def\bsimeq{{\bmath{\simeq}}}%
  734.   \def\bperp{{\bmath{\perp}}}%
  735.   \def\bequiv{{\bmath{\equiv}}}%
  736.   \def\basymp{{\bmath{\asymp}}}%
  737.   \def\bsmile{{\bmath{\smile}}}%
  738.   \def\bfrown{{\bmath{\frown}}}%
  739.   \def\bleftharpoonup{{\bmath{\leftharpoonup}}}%
  740.   \def\bleftharpoondown{{\bmath{\leftharpoondown}}}%
  741.   \def\brightharpoonup{{\bmath{\rightharpoonup}}}%
  742.   \def\brightharpoondown{{\bmath{\rightharpoondown}}}%
  743.   \def\blhook{{\bmath{\lhook}}}%
  744.   \def\brhook{{\bmath{\rhook}}}%
  745.   \def\bldotp{{\bmath{\ldotp}}}%
  746.   \def\bcdotp{{\bmath{\cdotp}}}%
  747. }
  748.  
  749. % Make \, work in non-math mode
  750. \def\,{\relax\ifmmode \mskip\thinmuskip\else \thinspace\fi}
  751. \let\protect=\relax
  752.  
  753. \long\def\@ifundefined#1#2#3{\expandafter\ifx\csname
  754.   #1\endcsname\relax#2\else#3\fi}
  755.  
  756. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  757.  
  758. % NewFont.sty: ALPHA VERSION patchlevel 8, 16th August 1994, M. Reed
  759.  
  760. % \addtom@thgroup{math font loading info}
  761. % Adds to internal \math@groups definition, which is executed at the end
  762. % of each size changing command. It is called by \NewSymbolFont.
  763.  
  764. \newtoks\math@groups \math@groups={}
  765. \def\addtom@thgroup#1#2{#1\expandafter{\the#1#2}} %  \mac={new\the\mac}
  766.  
  767.  
  768. % Make TeX change the values of \s@ze, \ss@ze, \sss@ze when \@npt is
  769. % executed. This makes it possible for math characters to be loaded
  770. % at the correct size automatically when the size is changed.
  771.  
  772. % \addtosizeh@ok{x}{10}{7}{5}
  773.  
  774. \def\addtosizeh@ok#1#2#3#4{%
  775.   \expandafter\def\csname @#1pt\endcsname{%
  776.     \def\s@ze{#2}\def\ss@ze{#3}\def\sss@ze{#4}\the\math@groups%
  777.   }%
  778. }
  779.  
  780.  
  781. % \resetsizehook allows the size parameters to be reset after \addtosizeh@ok
  782. % has been called (it re-defines \@npt).
  783. % e.g JFM which requires \xpt to have 10.5pt instead of 10pt.
  784. % Note: \resetsizehook must be used in the preamble BEFORE any
  785. % \New... commands.
  786.  
  787. % e.g. \resetsizehook{x}{10.5}{7}{5}
  788.  
  789. \let\resetsizehook=\addtosizeh@ok
  790.  
  791.  
  792. % Standard LaTeX sizes
  793.  
  794. \ifprod@font
  795. %  \addtosizeh@ok{v}    {5} {5}  {5}
  796. %  \addtosizeh@ok{vi}   {6} {6}  {6}
  797. %  \addtosizeh@ok{vii}  {7} {6}  {5}
  798.   \addtosizeh@ok{viii} {8} {6}  {5}
  799.   \addtosizeh@ok{ix}   {9} {6}  {5}
  800.   \addtosizeh@ok{x}    {10}{7}  {5}
  801.   \addtosizeh@ok{xi}   {11}{8}  {6}
  802. %  \addtosizeh@ok{xii}  {12}{8}  {6}
  803.   \addtosizeh@ok{xiv}  {14}{10} {7}
  804.   \addtosizeh@ok{xvii} {17}{12}{10}
  805. %  \addtosizeh@ok{xx}   {20}{14}{12}
  806. %  \addtosizeh@ok{xxv}  {25}{20}{17}
  807. \else
  808. %  \addtosizeh@ok{v}    {5}     {5}     {5}
  809. %  \addtosizeh@ok{vi}   {6}     {6}     {6}
  810. %  \addtosizeh@ok{vii}  {7}     {6}     {5}
  811.   \addtosizeh@ok{viii} {8}     {6}     {5}
  812.   \addtosizeh@ok{ix}   {9}     {6}     {5}
  813.   \addtosizeh@ok{x}    {10}    {7}     {5}
  814.   \addtosizeh@ok{xi}   {10.95} {8}     {6}
  815. %  \addtosizeh@ok{xii}  {12}    {8}     {6}
  816.   \addtosizeh@ok{xiv}  {14.4}  {10}    {7}
  817.   \addtosizeh@ok{xvii} {17.28} {12}    {10}
  818. %  \addtosizeh@ok{xx}   {20.74} {14.4}  {12}
  819. %  \addtosizeh@ok{xxv}  {24.88} {20.74} {17.28}
  820. \fi
  821.  
  822.  
  823. \def\get@font#1#2#3{%
  824.   \edef\fonts@ze{\romannumeral#3}%         10 -> x
  825.   \edef\fontn@me{\fonts@ze#1}%             AMSa -> xAMSa
  826.   \@ifundefined{\fontn@me}%
  827.     {%%\typeout{defining \fontn@me}%
  828.      \global\expandafter\font\csname \fontn@me\endcsname=#2 at #3pt}%
  829.     {}%
  830. }
  831.  
  832. \def\ass@tfont#1#2{%
  833.   \xdef\fam@name{\csname #1\endcsname}%
  834.   \xdef\font@name{\csname #2\endcsname}%
  835.   \let\textfont@name\font@name
  836.   \textfont\fam@name\textfont@name
  837. }
  838.  
  839. \def\ass@sfont#1#2{%
  840.   \xdef\fam@name{\csname #1\endcsname}%
  841.   \xdef\font@name{\csname #2\endcsname}%
  842.   \let\textfont@name\font@name
  843.   \scriptfont\fam@name\textfont@name
  844. }
  845.  
  846. \def\ass@ssfont#1#2{%
  847.   \xdef\fam@name{\csname #1\endcsname}%
  848.   \xdef\font@name{\csname #2\endcsname}%
  849.   \let\textfont@name\font@name
  850.   \scriptscriptfont\fam@name\textfont@name
  851. }
  852.  
  853.  
  854. %                fam name  base font  (allocates a \newfam)
  855. % \NewSymbolFont {AMSa}    {mtxm10}
  856.  
  857. \def\NewSymbolFont#1#2{%
  858.   \expandafter\ifx\csname sym#1fam\endcsname\relax % if not defined
  859.     \expandafter\newfam\csname sym#1fam\endcsname
  860.     \expandafter\edef\csname sym#1fam\endcsname{\the\allocationnumber}%
  861.     \addtom@thgroup\math@groups{%
  862.       \get@font{#1}{#2}{\s@ze}%
  863.       \ass@tfont{sym#1fam}{\fontn@me}%
  864.       \get@font{#1}{#2}{\ss@ze}%
  865.       \ass@sfont{sym#1fam}{\fontn@me}%
  866.       \get@font{#1}{#2}{\sss@ze}%
  867.       \ass@ssfont{sym#1fam}{\fontn@me}%
  868.     }%
  869.   \else
  870.     \errmessage{Family `#1' already defined}%
  871.   \fi
  872. }
  873.  
  874.  
  875. %                symbol         type fam    pos (hex)
  876. % \NewMathSymbol {\blacksquare} {0}  {AMSa} {04}
  877.  
  878. \def\NewMathSymbol#1#2#3#4{%
  879.   \edef\f@mly{\expandafter\hexnumber{\csname sym#3fam\endcsname}}%
  880.   \mathchardef#1="#2\f@mly#4\relax
  881. }
  882.  
  883.  
  884. %                  macro name  type  fam1   pos  fam2   pos
  885. % \NewMathDelimiter{\ulcorner} {4}   {AMSa} {70} {AMSb} {70}
  886.  
  887. \newif\ifd@f
  888.  
  889. \def\NewMathDelimiter#1#2#3#4#5#6{%
  890.   \d@ftrue
  891.   \expandafter\ifx\csname sym#3fam\endcsname\relax
  892.     \d@ffalse \errmessage{Family `#3' is not defined}%
  893.   \fi
  894.   \expandafter\ifx\csname sym#5fam\endcsname\relax
  895.     \d@ffalse \errmessage{Family `#5' is not defined}%
  896.   \fi
  897.   \ifd@f
  898.     \edef\f@mly{\expandafter\hexnumber{\csname sym#3fam\endcsname}}%
  899.     \edef\f@mlytw@{\expandafter\hexnumber{\csname sym#5fam\endcsname}}%
  900.     \xdef#1{\delimiter"#2\f@mly #4\f@mlytw@ #6\relax}%
  901.   \fi
  902. }
  903.  
  904.  
  905. %                  macro name  base font  skewchar setting e.g '60 (octal)
  906. % \NewMathAlphabet {mathbssi}  {mtmisb10} {}
  907.  
  908. \def\setboxz@h{\setbox\z@\hbox}
  909. \def\wdz@{\wd\z@}
  910. \def\boxz@{\box\z@}
  911. \def\setbox@ne{\setbox\@ne}
  912. \def\wd@ne{\wd\@ne}
  913.  
  914. \def\math@atom#1#2{%
  915.    \binrel@{#1}\binrel@@{#2}}
  916. \def\binrel@#1{\setboxz@h{\thinmuskip0mu
  917.   \medmuskip\m@ne mu\thickmuskip\@ne mu$#1\m@th$}%
  918.  \setbox@ne\hbox{\thinmuskip0mu\medmuskip\m@ne mu\thickmuskip
  919.   \@ne mu${}#1{}\m@th$}%
  920.  \setbox\tw@\hbox{\hskip\wd@ne\hskip-\wdz@}}
  921. \def\binrel@@#1{\ifdim\wd2<\z@\mathbin{#1}\else\ifdim\wd\tw@>\z@
  922.  \mathrel{#1}\else{#1}\fi\fi}
  923.  
  924. \def\m@thit{1}
  925.  
  926. \def\set@skchar#1{\global\expandafter\skewchar
  927.   \csname\fontn@me\endcsname=#1\relax}
  928.  
  929. \def\NewMathAlphabet#1#2#3{%
  930.   \def\tst{#3}%
  931.   \ifx\tst\empty\else % if a \skewchar setting is present
  932.     \expandafter\gdef\csname #1@sc\endcsname{}%  \def\cmd@sc{..}
  933.   \fi
  934.   %
  935.   \expandafter\def\csname #1\endcsname{%  \def\cmd{\protect\@cmd}
  936.     \protect\csname @#1\endcsname}%
  937.   %
  938.   \expandafter\def\csname @#1\endcsname##1{%  \def\@cmd{..}
  939.     {%
  940.     \begingroup
  941.       \get@font{#1}{#2}{\s@ze}%
  942.       \@ifundefined{#1@sc}{}{\set@skchar{#3}}%
  943.       \ass@tfont{m@thit}{\fontn@me}%
  944.       \get@font{#1}{#2}{\ss@ze}%
  945.       \@ifundefined{#1@sc}{}{\set@skchar{#3}}%
  946.       \ass@sfont{m@thit}{\fontn@me}%
  947.       \get@font{#1}{#2}{\sss@ze}%
  948.       \@ifundefined{#1@sc}{}{\set@skchar{#3}}%
  949.       \ass@ssfont{m@thit}{\fontn@me}%
  950.       %
  951.       \math@atom{##1}{%
  952.       \mathchoice%
  953.         {\hbox{$\m@th\displaystyle##1$}}%
  954.         {\hbox{$\m@th\textstyle##1$}}%
  955.         {\hbox{$\m@th\scriptstyle##1$}}%
  956.         {\hbox{$\m@th\scriptscriptstyle##1$}}}%
  957.     \endgroup
  958.     }%
  959.   }%
  960. }
  961.  
  962.  
  963. %                  macro name  base font  hyphenchar setting e.g -1 (off)
  964. % \NewTextAlphabet {textbfit}  {mtbxti10} {}
  965.  
  966. % save a family if \NewTextAlphabet is not used.
  967. \newif\iffirstta  \firsttatrue
  968.  
  969. \def\set@hchar#1{\global\expandafter\hyphenchar
  970.   \csname\fontn@me\endcsname=#1\relax}
  971.  
  972. \def\NewTextAlphabet#1#2#3{%
  973.   \iffirstta
  974.     \global\firsttafalse
  975.     \newfam\scratchfam
  976.     \edef\scrt@fam{\the\allocationnumber}%
  977.   \fi
  978.   \def\tst{#3}%
  979.   \ifx\tst\empty\else % if a \hyphenchar setting is required
  980.     \expandafter\gdef\csname #1@hc\endcsname{}%  \def\cmd@sc{..}
  981.   \fi
  982.   %
  983.   \expandafter\def\csname #1\endcsname{%  \def\cmd{\protect\t@cmd}
  984.     \protect\csname t@#1\endcsname}%
  985.   %
  986.   \long\expandafter\def\csname t@#1\endcsname##1{%  \def\t@cmd{..}
  987.     \ifmmode
  988.       \typeout{Warning: do not use \expandafter\string\csname #1\endcsname
  989.         \space in math mode}\fi%
  990.     {%
  991.       \get@font{#1}{#2}{\s@ze}\let\t@xtfnt=\fontn@me\relax
  992.       \@ifundefined{#1@hc}{}{\set@hchar{#3}}%
  993.       \ass@tfont{scrt@fam}{\fontn@me}%
  994.       \get@font{#1}{#2}{\ss@ze}%
  995.       \@ifundefined{#1@hc}{}{\set@hchar{#3}}%
  996.       \ass@sfont{scrt@fam}{\fontn@me}%
  997.       \get@font{#1}{#2}{\sss@ze}%
  998.       \@ifundefined{#1@hc}{}{\set@hchar{#3}}%
  999.       \ass@ssfont{scrt@fam}{\fontn@me}%
  1000.       \fam\scratchfam\csname\t@xtfnt\endcsname
  1001.     ##1%
  1002.     }%
  1003.   }%
  1004.   %
  1005.   \expandafter\def\csname #1shape%  \def\cmdshape{\protect\@cmdshape}
  1006.     \endcsname{\protect\csname @#1shape\endcsname}%
  1007.   %
  1008.   \expandafter\def\csname @#1shape\endcsname{%  \def\@cmdshape
  1009.     \ifmmode
  1010.       \typeout{Warning: do not use \expandafter\string\csname
  1011.         #1shape\endcsname \space in math mode}\fi
  1012.       %
  1013.       \get@font{#1}{#2}{\s@ze}\let\t@xtfnt=\fontn@me\relax
  1014.       \@ifundefined{#1@hc}{}{\set@hchar{#3}}%
  1015.       \ass@tfont{scrt@fam}{\fontn@me}%
  1016.       \get@font{#1}{#2}{\ss@ze}%
  1017.       \@ifundefined{#1@hc}{}{\set@hchar{#3}}%
  1018.       \ass@sfont{scrt@fam}{\fontn@me}%
  1019.       \get@font{#1}{#2}{\sss@ze}%
  1020.       \@ifundefined{#1@hc}{}{\set@hchar{#3}}%
  1021.       \ass@ssfont{scrt@fam}{\fontn@me}%
  1022.       \fam\scratchfam\csname\t@xtfnt\endcsname
  1023.   }%
  1024. }
  1025.  
  1026.  
  1027. % \bmath{math text}
  1028.  
  1029. \ifprod@font
  1030.   \def\math@itfnt{mtmib10}
  1031.   \def\math@syfnt{mtbsy10}
  1032. \else
  1033.   \def\math@itfnt{cmmib10}
  1034.   \def\math@syfnt{cmbsy10}
  1035. \fi
  1036.  
  1037. \def\m@thsy{2}
  1038.  
  1039. \def\bmath{\protect\@bmath}
  1040. \def\@bmath#1{%
  1041.   {%
  1042.   \begingroup
  1043.     \get@font{mthit}{\math@itfnt}{\s@ze}\set@skchar{'177}%
  1044.     \ass@tfont{m@thit}{\fontn@me}%
  1045.     \get@font{mthit}{\math@itfnt}{\ss@ze}\set@skchar{'177}%
  1046.     \ass@sfont{m@thit}{\fontn@me}%
  1047.     \get@font{mthit}{\math@itfnt}{\sss@ze}\set@skchar{'177}%
  1048.     \ass@ssfont{m@thit}{\fontn@me}%
  1049.     %
  1050.     \get@font{mthsy}{\math@syfnt}{\s@ze}\set@skchar{'60}%
  1051.     \ass@tfont{m@thsy}{\fontn@me}%
  1052.     \get@font{mthsy}{\math@syfnt}{\ss@ze}\set@skchar{'60}%
  1053.     \ass@sfont{m@thsy}{\fontn@me}%
  1054.     \get@font{mthsy}{\math@syfnt}{\sss@ze}\set@skchar{'60}%
  1055.     \ass@ssfont{m@thsy}{\fontn@me}%
  1056.     %
  1057.     \math@atom{#1}{%
  1058.     \mathchoice%
  1059.       {\hbox{$\m@th\displaystyle#1$}}%
  1060.       {\hbox{$\m@th\textstyle#1$}}%
  1061.       {\hbox{$\m@th\scriptstyle#1$}}%
  1062.       {\hbox{$\m@th\scriptscriptstyle#1$}}}%
  1063.   \endgroup
  1064.   }%
  1065. }
  1066.  
  1067. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1068.  
  1069.  
  1070. % Astronomy and Astrophysics symbol macros
  1071.  
  1072. \def\la{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
  1073. $\displaystyle##$\hfil\cr<\cr\sim\cr}}}
  1074. {\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr
  1075. <\cr\sim\cr}}}
  1076. {\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr
  1077. <\cr\sim\cr}}}
  1078. {\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
  1079. <\cr\sim\cr}}}}}
  1080.  
  1081. \def\ga{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
  1082. $\displaystyle##$\hfil\cr>\cr\sim\cr}}}
  1083. {\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr
  1084. >\cr\sim\cr}}}
  1085. {\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr
  1086. >\cr\sim\cr}}}
  1087. {\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
  1088. >\cr\sim\cr}}}}}
  1089.  
  1090. \def\getsto{\mathrel{\mathchoice {\vcenter{\offinterlineskip
  1091. \halign{\hfil
  1092. $\displaystyle##$\hfil\cr\gets\cr\to\cr}}}
  1093. {\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr\gets
  1094. \cr\to\cr}}}
  1095. {\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr\gets
  1096. \cr\to\cr}}}
  1097. {\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
  1098. \gets\cr\to\cr}}}}}
  1099.  
  1100. \def\cor{\mathrel{\mathchoice {\hbox{$\widehat=$}}{\hbox{$\widehat=$}}
  1101. {\hbox{$\scriptstyle\hat=$}}
  1102. {\hbox{$\scriptscriptstyle\hat=$}}}}
  1103.  
  1104. \def\lid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
  1105. $\displaystyle##$\hfil\cr<\cr\noalign{\vskip1.2pt}=\cr}}}
  1106. {\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr<\cr
  1107. \noalign{\vskip1.2pt}=\cr}}}
  1108. {\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr<\cr
  1109. \noalign{\vskip1pt}=\cr}}}
  1110. {\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
  1111. <\cr
  1112. \noalign{\vskip0.9pt}=\cr}}}}}
  1113.  
  1114. \def\gid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
  1115. $\displaystyle##$\hfil\cr>\cr\noalign{\vskip1.2pt}=\cr}}}
  1116. {\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr>\cr
  1117. \noalign{\vskip1.2pt}=\cr}}}
  1118. {\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr>\cr
  1119. \noalign{\vskip1pt}=\cr}}}
  1120. {\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
  1121. >\cr
  1122. \noalign{\vskip0.9pt}=\cr}}}}}
  1123.  
  1124. \def\sol{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
  1125. $\displaystyle##$\hfil\cr\sim\cr<\cr}}}
  1126. {\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr\sim\cr
  1127. <\cr}}}
  1128. {\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr\sim\cr
  1129. <\cr}}}
  1130. {\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
  1131. \sim\cr<\cr}}}}}
  1132.  
  1133. \def\sog{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
  1134. $\displaystyle##$\hfil\cr\sim\cr>\cr}}}
  1135. {\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr\sim\cr
  1136. >\cr}}}
  1137. {\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr
  1138. \sim\cr>\cr}}}
  1139. {\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
  1140. \sim\cr>\cr}}}}}
  1141.  
  1142. \def\lse{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
  1143. $\displaystyle##$\hfil\cr<\cr\simeq\cr}}}
  1144. {\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr
  1145. <\cr\simeq\cr}}}
  1146. {\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr
  1147. <\cr\simeq\cr}}}
  1148. {\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
  1149. <\cr\simeq\cr}}}}}
  1150.  
  1151. \def\gse{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
  1152. $\displaystyle##$\hfil\cr>\cr\simeq\cr}}}
  1153. {\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr
  1154. >\cr\simeq\cr}}}
  1155. {\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr
  1156. >\cr\simeq\cr}}}
  1157. {\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
  1158. >\cr\simeq\cr}}}}}
  1159.  
  1160. \def\grole{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
  1161. $\displaystyle##$\hfil\cr>\cr\noalign{\vskip-1.5pt}<\cr}}}
  1162. {\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr
  1163. >\cr\noalign{\vskip-1.5pt}<\cr}}}
  1164. {\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr
  1165. >\cr\noalign{\vskip-1pt}<\cr}}}
  1166. {\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
  1167. >\cr\noalign{\vskip-0.5pt}<\cr}}}}}
  1168.  
  1169. \def\leogr{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
  1170. $\displaystyle##$\hfil\cr<\cr\noalign{\vskip-1.5pt}>\cr}}}
  1171. {\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr
  1172. <\cr\noalign{\vskip-1.5pt}>\cr}}}
  1173. {\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr
  1174. <\cr\noalign{\vskip-1pt}>\cr}}}
  1175. {\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
  1176. <\cr\noalign{\vskip-0.5pt}>\cr}}}}}
  1177.  
  1178. \def\loa{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
  1179. $\displaystyle##$\hfil\cr<\cr\approx\cr}}}
  1180. {\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr
  1181. <\cr\approx\cr}}}
  1182. {\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr
  1183. <\cr\approx\cr}}}
  1184. {\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
  1185. <\cr\approx\cr}}}}}
  1186.  
  1187. \def\goa{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
  1188. $\displaystyle##$\hfil\cr>\cr\approx\cr}}}
  1189. {\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr
  1190. >\cr\approx\cr}}}
  1191. {\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr
  1192. >\cr\approx\cr}}}
  1193. {\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
  1194. >\cr\approx\cr}}}}}
  1195.  
  1196. \def\sun{\hbox{$\odot$}}
  1197. \def\degr{\hbox{$^\circ$}}
  1198. \def\diameter{{\ifmmode\mathchoice
  1199. {\ooalign{\hfil\hbox{$\displaystyle/$}\hfil\crcr
  1200. {\hbox{$\displaystyle\mathchar"20D$}}}}
  1201. {\ooalign{\hfil\hbox{$\textstyle/$}\hfil\crcr
  1202. {\hbox{$\textstyle\mathchar"20D$}}}}
  1203. {\ooalign{\hfil\hbox{$\scriptstyle/$}\hfil\crcr
  1204. {\hbox{$\scriptstyle\mathchar"20D$}}}}
  1205. {\ooalign{\hfil\hbox{$\scriptscriptstyle/$}\hfil\crcr
  1206. {\hbox{$\scriptscriptstyle\mathchar"20D$}}}}
  1207. \else{\ooalign{\hfil/\hfil\crcr\mathhexbox20D}}%
  1208. \fi}}
  1209.  
  1210. \def\sq{\ifmmode\squareforqed\else{\unskip\nobreak\hfil
  1211. \penalty50\hskip1em\null\nobreak\hfil\squareforqed
  1212. \parfillskip=0pt\finalhyphendemerits=0\endgraf}\fi}
  1213. \def\squareforqed{\hbox{\rlap{$\sqcap$}$\sqcup$}}
  1214.  
  1215. \def\fd{\hbox{$.\!\!^{\rm d}$}}
  1216. \def\fh{\hbox{$.\!\!^{\rm h}$}}
  1217. \def\fm{\hbox{$.\!\!^{\rm m}$}}
  1218. \def\fs{\hbox{$.\!\!^{\rm s}$}}
  1219. \def\fdg{\hbox{$.\!\!^\circ$}}
  1220. \def\farcm{\hbox{$.\mkern-4mu^\prime$}}
  1221. \def\farcs{\hbox{$.\!\!^{\prime\prime}$}}
  1222. \def\fp{\hbox{$.\!\!^{\scriptscriptstyle\rm p}$}}
  1223. \def\arcmin{\hbox{$^\prime$}}
  1224. \def\arcsec{\hbox{$^{\prime\prime}$}}
  1225.  
  1226. % Simulated Blackboard Bold symbols
  1227.  
  1228. \def\bbbr{{\rm I\!R}}
  1229. \def\bbbm{{\rm I\!M}}
  1230. \def\bbbn{{\rm I\!N}}
  1231. \def\bbbf{{\rm I\!F}}
  1232. \def\bbbh{{\rm I\!H}}
  1233. \def\bbbk{{\rm I\!K}}
  1234. \def\bbbp{{\rm I\!P}}
  1235. \def\bbbone{{\mathchoice {\rm 1\mskip-4mu l} {\rm 1\mskip-4mu l}
  1236. {\rm 1\mskip-4.5mu l} {\rm 1\mskip-5mu l}}}
  1237. \def\bbbc{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm C$}\hbox{\hbox
  1238. to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}
  1239. {\setbox0=\hbox{$\textstyle\rm C$}\hbox{\hbox
  1240. to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}
  1241. {\setbox0=\hbox{$\scriptstyle\rm C$}\hbox{\hbox
  1242. to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}
  1243. {\setbox0=\hbox{$\scriptscriptstyle\rm C$}\hbox{\hbox
  1244. to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}}}
  1245. \def\bbbq{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm
  1246. Q$}\hbox{\raise
  1247. 0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}}
  1248. {\setbox0=\hbox{$\textstyle\rm Q$}\hbox{\raise
  1249. 0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}}
  1250. {\setbox0=\hbox{$\scriptstyle\rm Q$}\hbox{\raise
  1251. 0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}
  1252. {\setbox0=\hbox{$\scriptscriptstyle\rm Q$}\hbox{\raise
  1253. 0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}}}
  1254. \def\bbbt{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm
  1255. T$}\hbox{\hbox to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}
  1256. {\setbox0=\hbox{$\textstyle\rm T$}\hbox{\hbox
  1257. to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}
  1258. {\setbox0=\hbox{$\scriptstyle\rm T$}\hbox{\hbox
  1259. to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}
  1260. {\setbox0=\hbox{$\scriptscriptstyle\rm T$}\hbox{\hbox
  1261. to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}}}
  1262. \def\bbbs{{\mathchoice
  1263. {\setbox0=\hbox{$\displaystyle     \rm S$}\hbox{\raise0.5\ht0\hbox
  1264. to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox
  1265. to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}}
  1266. {\setbox0=\hbox{$\textstyle        \rm S$}\hbox{\raise0.5\ht0\hbox
  1267. to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox
  1268. to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}}
  1269. {\setbox0=\hbox{$\scriptstyle      \rm S$}\hbox{\raise0.5\ht0\hbox
  1270. to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox
  1271. to0pt{\kern0.5\wd0\vrule height0.45\ht0\hss}\box0}}
  1272. {\setbox0=\hbox{$\scriptscriptstyle\rm S$}\hbox{\raise0.5\ht0\hbox
  1273. to0pt{\kern0.4\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox
  1274. to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}}
  1275. \def\bbbz{{\mathchoice {\hbox{$\sf\textstyle Z\kern-0.4em Z$}}
  1276. {\hbox{$\sf\textstyle Z\kern-0.4em Z$}}
  1277. {\hbox{$\sf\scriptstyle Z\kern-0.3em Z$}}
  1278. {\hbox{$\sf\scriptscriptstyle Z\kern-0.2em Z$}}}}
  1279.  
  1280.  
  1281. % NUMBER THE DESIGN ELEMENTS
  1282.  
  1283. \def\Nulle{0} % null element
  1284. \def\Afe{1}   % author affiliation
  1285. \def\Hae{2}   % heading A
  1286. \def\Hbe{3}   % heading B
  1287. \def\Hce{4}   % heading C
  1288. \def\Hde{5}   % heading D
  1289.  
  1290.  
  1291. % TEMPORARY REGISTERS
  1292.  
  1293. \newcount\LastMac       \LastMac=\Nulle
  1294.  
  1295. \newskip\half      \half=5.5pt plus 1.5pt minus 2.25pt
  1296. \newskip\one       \one=11pt plus 3pt minus 5.5pt
  1297. \newskip\onehalf   \onehalf=16.5pt plus 5.5pt minus 8.25pt
  1298. \newskip\two       \two=22pt plus 5.5pt minus 11pt
  1299.  
  1300. \def\Half{\addvspace{\half}}
  1301. \def\One{\addvspace{\one}}
  1302. \def\OneHalf{\addvspace{\onehalf}}
  1303. \def\Two{\addvspace{\two}}
  1304.  
  1305. \def\Referee{% produce version for refereeing
  1306.   \def\baselinestretch{2}%
  1307.   \ninepoint
  1308. }
  1309.  
  1310. \def\Raggedright{% set lines unjustified
  1311.   \rightskip=\z@ plus \hsize\relax
  1312. }
  1313.  
  1314. \def\Fullout{% set lines justified
  1315.   \rightskip=\z@\relax
  1316. }
  1317.  
  1318. \def\Hang#1#2{% set hanging indentation
  1319.   \hangindent=#1%
  1320.   \hangafter=#2\relax
  1321. }
  1322.  
  1323. \def\makeatletter{\catcode `\@=11\relax}
  1324. \def\makeatother{\catcode `\@=12\relax}
  1325.  
  1326.  
  1327. % Pagestyles
  1328.  
  1329. \newif\ifsp@page
  1330. \def\pagestyle#1{\csname ps@#1\endcsname}
  1331. \def\thispagestyle#1{\global\sp@pagetrue\gdef\sp@type{#1}}
  1332.  
  1333. \def\ps@titlepage{%
  1334.   \def\@oddhead{\eightpoint\noindent \the\CatchLine
  1335.     \ifprod@font\else\qquad Printed\ \today\qquad
  1336.       (MN plain \TeX\ macros\ v\@version)\fi \hfil}%
  1337.   \let\@evenhead=\@oddhead
  1338. }
  1339.  
  1340. \def\ps@headings{%
  1341.   \def\@oddhead{\elevenpoint\it\noindent
  1342.     \hfill\the\RightHeader\hskip1.5em\rm\folio}%
  1343.   \def\@evenhead{\elevenpoint\noindent
  1344.     \folio\hskip1.5em\it\the\LeftHeader\hfill}%
  1345. }
  1346.  
  1347. \def\ps@plate{%
  1348.   \def\@oddhead{\eightpoint\noindent\plt@cap\hfil}%
  1349.   \def\@evenhead{\eightpoint\noindent\plt@cap\hfil}%
  1350. }
  1351.  
  1352.  
  1353. % DESIGN ELEMENT DEFINITIONS
  1354.  
  1355. % Article opening
  1356.  
  1357. \def\title#1{% article title
  1358.   \bgroup
  1359.     \vbox to 8pt{\vss}%
  1360.     \seventeenpoint
  1361.     \Raggedright
  1362.     \noindent \strut{\bf #1}\par
  1363.   \egroup
  1364. }
  1365.  
  1366. \def\author#1{% article author(s)
  1367.   \bgroup
  1368.     \ifnum\LastMac=\Afe \OneHalf\else \vskip 21pt\fi
  1369.     \fourteenpoint
  1370.     \Raggedright
  1371.     \noindent \strut #1\par
  1372.     \vskip 3pt%
  1373.   \egroup
  1374. }
  1375.  
  1376. \def\affiliation#1{% author(s) affiliation
  1377.   \bgroup
  1378.     \vskip -4pt%
  1379.     \eightpoint
  1380.     \Raggedright
  1381.     \noindent \strut {\it #1}\par
  1382.   \egroup
  1383.   \LastMac=\Afe\relax
  1384. }
  1385.  
  1386. \def\acceptedline#1{% acceptance date
  1387.   \bgroup
  1388.     \Two
  1389.     \eightpoint
  1390.     \Raggedright
  1391.     \noindent \strut #1\par
  1392.   \egroup
  1393. }
  1394.  
  1395. \long\def\abstract#1{%
  1396.   \bgroup
  1397.     \vskip 20pt%
  1398.     \everypar{\Hang{11pc}{0}}%
  1399.     \noindent{\ninebf ABSTRACT}\par
  1400.     \tenpoint
  1401.     \Fullout
  1402.     \noindent #1\par
  1403.   \egroup
  1404. }
  1405.  
  1406. \long\def\keywords#1{% keywords
  1407.   \bgroup
  1408.     \Half
  1409.     \everypar{\Hang{11pc}{0}}%
  1410.     \tenpoint
  1411.     \Fullout
  1412.     \noindent\hbox{\bf Key words:}\ #1\par
  1413.   \egroup
  1414. }
  1415.  
  1416.  
  1417. % The \maketitle macro ensures that the two spanning material appears
  1418. % at the top of the first page, and that it has two lines of space
  1419. % underneath it. If you forget this in you input, no output will be produced.
  1420. % The \BeginOpening (alias \begintopmatter) macro should be called at the
  1421. % very start of the input file, so that it is in force when the document
  1422. % starts. This ensures that when \maketitle is called that the group is
  1423. % closed, and the material gets printed.
  1424.  
  1425. \def\maketitle{%
  1426.   \EndOpening
  1427.   \ifsinglecol \else \MakePage\fi
  1428. }
  1429.  
  1430.  
  1431. % Page offset
  1432.  
  1433. \def\pageoffset#1#2{\hoffset=#1\relax\voffset=#2\relax}
  1434.  
  1435.  
  1436. % Counter setup
  1437.  
  1438. \def\@nameuse#1{\csname #1\endcsname}
  1439. \def\arabic#1{\@arabic{\@nameuse{#1}}}
  1440. \def\alph#1{\@alph{\@nameuse{#1}}}
  1441. \def\Alph#1{\@Alph{\@nameuse{#1}}}
  1442. \def\@arabic#1{\number #1}
  1443. \def\@Alph#1{\ifcase#1\or A\or B\or C\or D\else\@Ialph{#1}\fi}
  1444. \def\@Ialph#1{\ifcase#1\or \or \or \or \or E\or F\or G\or H\or I\or J\or
  1445.    K\or L\or M\or N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or X\or
  1446.    Y\or Z\else\errmessage{Counter out of range}\fi}
  1447. \def\@alph#1{\ifcase#1\or a\or b\or c\or d\else\@ialph{#1}\fi}
  1448. \def\@ialph#1{\ifcase#1\or \or \or \or \or e\or f\or g\or h\or i\or j\or
  1449.    k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or
  1450.    z\else\errmessage{Counter out of range}\fi}
  1451.  
  1452.  
  1453. % Equation auto-numbering
  1454.  
  1455. \newcount\Eqnno
  1456. \newcount\SubEqnno
  1457.  
  1458. \def\theeq{\arabic{Eqnno}}
  1459. \def\thesubeq{\alph{SubEqnno}}
  1460.  
  1461. \def\stepeq{\relax
  1462.   \global\SubEqnno \z@
  1463.   \global\advance\Eqnno \@ne\relax
  1464.   {\rm (\theeq)}%
  1465. }
  1466.  
  1467. \def\startsubeq{\relax
  1468.   \global\SubEqnno \z@
  1469.   \global\advance\Eqnno \@ne\relax
  1470.   \stepsubeq
  1471. }
  1472.  
  1473. \def\stepsubeq{\relax
  1474.   \global\advance\SubEqnno \@ne\relax
  1475.   {\rm (\theeq\thesubeq)}%
  1476. }
  1477.  
  1478.  
  1479. % Headings
  1480.  
  1481. \newcount\Sec        %  heading auto number counters
  1482. \newcount\SecSec
  1483. \newcount\SecSecSec
  1484.  
  1485. \def\thesection{\arabic{Sec}}
  1486. \def\thesubsection{\thesection.\arabic{SecSec}}
  1487. \def\thesubsubsection{\thesubsection.\arabic{SecSecSec}}
  1488.  
  1489.  
  1490. \Sec=\z@
  1491.  
  1492. \def\:{\let\@sptoken= } \:  % this makes \@sptoken a space token 
  1493. \def\:{\@xifnch} \expandafter\def\: {\futurelet\@tempc\@ifnch}
  1494.  
  1495. \def\@ifnextchar#1#2#3{%
  1496.   \let\@tempMACe #1%
  1497.   \def\@tempMACa{#2}%
  1498.   \def\@tempMACb{#3}%
  1499.   \futurelet \@tempMACc\@ifnch%
  1500. }
  1501.  
  1502. \def\@ifnch{%
  1503. \ifx \@tempMACc \@sptoken%
  1504.   \let\@tempMACd\@xifnch%
  1505. \else%
  1506.   \ifx \@tempMACc \@tempMACe%
  1507.     \let\@tempMACd\@tempMACa%
  1508.   \else%
  1509.     \let\@tempMACd\@tempMACb%
  1510.   \fi%
  1511. \fi%
  1512. \@tempMACd%
  1513. }
  1514.  
  1515. \def\@ifstar#1#2{\@ifnextchar *{\def\@tempMACa*{#1}\@tempMACa}{#2}}
  1516.  
  1517. \newskip\@tempskipb
  1518.  
  1519. \def\addvspace#1{%
  1520.   \ifvmode\else \endgraf\fi%
  1521.   \ifdim\lastskip=\z@%
  1522.     \vskip #1\relax%
  1523.   \else%
  1524.     \@tempskipb#1\relax\@xaddvskip%
  1525.   \fi%
  1526. }
  1527.  
  1528. \def\@xaddvskip{%
  1529.   \ifdim\lastskip<\@tempskipb%
  1530.     \vskip-\lastskip%
  1531.     \vskip\@tempskipb\relax%
  1532.   \else%
  1533.     \ifdim\@tempskipb<\z@%
  1534.       \ifdim\lastskip<\z@ \else%
  1535.         \advance\@tempskipb\lastskip%
  1536.         \vskip-\lastskip\vskip\@tempskipb%
  1537.       \fi%
  1538.     \fi%
  1539.   \fi%
  1540. }
  1541.  
  1542. \newskip\@tmpSKIP
  1543.  
  1544. \def\addpen#1{%
  1545.   \ifvmode
  1546.     \if@nobreak
  1547.     \else
  1548.       \ifdim\lastskip=\z@
  1549.         \penalty#1\relax
  1550.       \else
  1551.         \@tmpSKIP=\lastskip
  1552.         \vskip -\lastskip
  1553.         \penalty#1\vskip\@tmpSKIP
  1554.       \fi
  1555.     \fi
  1556.   \fi
  1557. }
  1558.  
  1559. \newcount\@clubpen   \@clubpen=\clubpenalty
  1560. \newif\if@nobreak    \@nobreakfalse
  1561.  
  1562. \def\@noafterindent{%
  1563.   \global\@nobreaktrue
  1564.   \everypar{\if@nobreak
  1565.               \global\@nobreakfalse
  1566.               \clubpenalty \@M
  1567.               {\setbox\z@\lastbox}%
  1568.               \LastMac=\Nulle\relax%
  1569.             \else
  1570.               \clubpenalty \@clubpen
  1571.               \everypar{}%
  1572.             \fi}%
  1573. }
  1574.  
  1575. \newcount\gds@cbrk   \gds@cbrk=-300
  1576.  
  1577. \def\@nohdbrk{\interlinepenalty \@M\relax}
  1578.  
  1579. \let\@par=\par
  1580. \def\@restorepar{\def\par{\@par}}
  1581.  
  1582. \newif\if@endpe   \@endpefalse
  1583.  
  1584. \def\@doendpe{\@endpetrue \@nobreakfalse \LastMac=\Nulle\relax%
  1585.      \def\par{\@restorepar\everypar{}\par\@endpefalse}%
  1586.               \everypar{\setbox\z@\lastbox\everypar{}\@endpefalse}%
  1587. }
  1588.  
  1589. \def\section{\@ifstar{\@ssection}{\@section}}
  1590.  
  1591. \def\@section#1{% heading A (\section{....})
  1592.   \if@nobreak
  1593.     \everypar{}%
  1594.     \ifnum\LastMac=\Hae \addvspace{\half}\fi
  1595.   \else
  1596.     \addpen{\gds@cbrk}%
  1597.     \addvspace{\two}%
  1598.   \fi
  1599.   \bgroup
  1600.     \ninepoint\bf
  1601.     \Raggedright
  1602.     \global\advance\Sec \@ne
  1603.     \ifappendix
  1604.       \global\Eqnno=\z@ \global\SubEqnno=\z@\relax
  1605.       \def\ch@ck{#1}%
  1606.       \ifx\ch@ck\empty \def\c@lon{}\else\def\c@lon{:}\fi
  1607.       \noindent\@nohdbrk APPENDIX\ \thesection\c@lon\hskip 0.5em%
  1608.         \uppercase{#1}\par
  1609.     \else
  1610.       \noindent\@nohdbrk\thesection\hskip 1pc \uppercase{#1}\par
  1611.     \fi
  1612.     \global\SecSec=\z@
  1613.   \egroup
  1614.   \nobreak
  1615.   \vskip\half
  1616.   \nobreak
  1617.   \@noafterindent
  1618.   \LastMac=\Hae\relax
  1619. }
  1620.  
  1621. \def\@ssection#1{%  main section heading (\section*{....})
  1622.   \if@nobreak
  1623.     \everypar{}%
  1624.     \ifnum\LastMac=\Hae \addvspace{\half}\fi
  1625.   \else
  1626.     \addpen{\gds@cbrk}%
  1627.     \addvspace{\two}%
  1628.   \fi
  1629.   \bgroup
  1630.     \ninepoint\bf
  1631.     \Raggedright
  1632. %    \ifappendix
  1633. %      \global\Eqnno=\z@ \global\SubEqnno=\z@\relax % mh in apps dont reset
  1634. %      \noindent\@nohdbrk APPENDIX:\hskip 0.5em%
  1635. %        \uppercase{#1}\par
  1636. %    \else
  1637.     \noindent\@nohdbrk\uppercase{#1}\par
  1638. %    \fi
  1639.   \egroup
  1640.   \nobreak
  1641.   \vskip\half
  1642.   \nobreak
  1643.   \@noafterindent
  1644.   \LastMac=\Hae\relax
  1645. }
  1646.  
  1647. \def\subsection{\@ifstar{\@ssubsection}{\@subsection}}
  1648.  
  1649. \def\@subsection#1{% heading B
  1650.   \if@nobreak
  1651.     \everypar{}%
  1652.     \ifnum\LastMac=\Hae \addvspace{1pt plus 1pt minus .5pt}\fi
  1653.   \else
  1654.     \addpen{\gds@cbrk}%
  1655.     \addvspace{\onehalf}%
  1656.   \fi
  1657.   \bgroup
  1658.     \ninepoint\bf
  1659.     \Raggedright
  1660.     \global\advance\SecSec \@ne
  1661.     \noindent\@nohdbrk\thesubsection \hskip 1pc\relax #1\par
  1662.     \global\SecSecSec=\z@
  1663.   \egroup
  1664.   \nobreak
  1665.   \vskip\half
  1666.   \nobreak
  1667.   \@noafterindent
  1668.   \LastMac=\Hbe\relax
  1669. }
  1670.  
  1671. \def\@ssubsection#1{% heading B*
  1672.   \if@nobreak
  1673.     \everypar{}%
  1674.     \ifnum\LastMac=\Hae \addvspace{1pt plus 1pt minus .5pt}\fi
  1675.   \else
  1676.     \addpen{\gds@cbrk}%
  1677.     \addvspace{\onehalf}%
  1678.   \fi
  1679.   \bgroup
  1680.     \ninepoint\bf
  1681.     \Raggedright
  1682.     \noindent\@nohdbrk #1\par
  1683.   \egroup
  1684.   \nobreak
  1685.   \vskip\half
  1686.   \nobreak
  1687.   \@noafterindent
  1688.   \LastMac=\Hbe\relax
  1689. }
  1690.  
  1691. \def\subsubsection{\@ifstar{\@ssubsubsection}{\@subsubsection}}
  1692.  
  1693. \def\@subsubsection#1{% heading C
  1694.   \if@nobreak
  1695.     \everypar{}%
  1696.     \ifnum\LastMac=\Hbe \addvspace{1pt plus 1pt minus .5pt}\fi
  1697.   \else
  1698.     \addpen{\gds@cbrk}%
  1699.     \addvspace{\onehalf}%
  1700.   \fi
  1701.   \bgroup
  1702.     \ninepoint\it
  1703.     \Raggedright
  1704.     \global\advance\SecSecSec \@ne
  1705.     \noindent\@nohdbrk\thesubsubsection \hskip 1pc\relax #1\par
  1706.   \egroup
  1707.   \nobreak
  1708.   \vskip\half
  1709.   \nobreak
  1710.   \@noafterindent
  1711.   \LastMac=\Hce\relax
  1712. }
  1713.  
  1714. \def\@ssubsubsection#1{% heading C*
  1715.   \if@nobreak
  1716.     \everypar{}%
  1717.     \ifnum\LastMac=\Hbe \addvspace{1pt plus 1pt minus .5pt}\fi
  1718.   \else
  1719.     \addpen{\gds@cbrk}%
  1720.     \addvspace{\onehalf}%
  1721.   \fi
  1722.   \bgroup
  1723.     \ninepoint\it
  1724.     \Raggedright
  1725.     \noindent\@nohdbrk #1\par
  1726.   \egroup
  1727.   \nobreak
  1728.   \vskip\half
  1729.   \nobreak
  1730.   \@noafterindent
  1731.   \LastMac=\Hce\relax
  1732. }
  1733.  
  1734. \def\paragraph#1{% heading D
  1735.   \if@nobreak
  1736.     \everypar{}%
  1737.   \else
  1738.     \addpen{\gds@cbrk}%
  1739.     \addvspace{\one}%
  1740.   \fi%
  1741.   \bgroup%
  1742.     \ninepoint\it
  1743.     \noindent #1\ \nobreak%
  1744.   \egroup
  1745.   \LastMac=\Hde\relax
  1746.   \ignorespaces
  1747. }
  1748.  
  1749.  
  1750. % Appendix
  1751.  
  1752. \newif\ifappendix
  1753.  
  1754. \def\appendix{%
  1755.   \global\appendixtrue
  1756.   \def\thesection{\Alph{Sec}}%
  1757.   \def\thesubsection{\thesection\arabic{SecSec}}%
  1758.   \def\theeq{\thesection\arabic{Eqnno}}%
  1759.   \Sec=\z@ \SecSec=\z@ \SecSecSec=\z@ \Eqnno=\z@ \SubEqnno=\z@\relax
  1760. }
  1761.  
  1762.  
  1763. % Text
  1764.  
  1765. \let\tx=\relax % provided for backward compatibility
  1766.  
  1767.  
  1768. % Lists
  1769.  
  1770. \def\beginlist{%
  1771.   \par\if@nobreak \else\addvspace{\half}\fi%
  1772.   \bgroup%
  1773.     \ninepoint
  1774.     \let\item=\list@item%
  1775. }
  1776.  
  1777. \def\list@item{%
  1778.   \par\noindent\hskip 1em\relax%
  1779.   \ignorespaces%
  1780. }
  1781.  
  1782. \def\endlist{\par\egroup\addvspace{\half}\@doendpe}
  1783.  
  1784.  
  1785. % References
  1786.  
  1787. \def\beginrefs{%
  1788.   \par
  1789.   \bgroup
  1790.     \eightpoint
  1791.     \Fullout
  1792.     \let\bibitem=\bib@item
  1793. }
  1794.  
  1795. \def\bib@item{%
  1796.   \par\parindent=1.5em\Hang{1.5em}{1}%
  1797.   \everypar={\Hang{1.5em}{1}\ignorespaces}%
  1798.   \noindent\ignorespaces
  1799. }
  1800.  
  1801. \def\endrefs{\par\egroup\@doendpe}
  1802.  
  1803.  
  1804. % Page heads
  1805.  
  1806. \newtoks\CatchLine
  1807.  
  1808. \def\@journal{Mon.\ Not.\ R.\ Astron.\ Soc.\ }  % The journal title string
  1809. \def\@pubyear{1994}        % Assign a default publication year
  1810. \def\@pagerange{000--000}  % Assign a default page-range
  1811. \def\@volume{000}          % Assign a default volume number
  1812. \def\@microfiche{}         %
  1813.  
  1814. \def\pubyear#1{\gdef\@pubyear{#1}\@makecatchline}
  1815. \def\pagerange#1{\gdef\@pagerange{#1}\@makecatchline}
  1816. \def\volume#1{\gdef\@volume{#1}\@makecatchline}
  1817. \def\microfiche#1{\gdef\@microfiche{and Microfiche\ #1}\@makecatchline}
  1818.  
  1819. \def\@makecatchline{%
  1820.   \global\CatchLine{%
  1821.     {\rm \@journal {\bf \@volume},\ \@pagerange\ (\@pubyear)\ \@microfiche}}%
  1822. }
  1823.  
  1824. \@makecatchline % Assign a catchline, using the above defaults
  1825.  
  1826. \newtoks\LeftHeader
  1827. \def\shortauthor#1{% left page head
  1828.   \global\LeftHeader{#1}%
  1829. }
  1830.  
  1831. \newtoks\RightHeader
  1832. \def\shorttitle#1{% right page head
  1833.   \global\RightHeader{#1}%
  1834. }
  1835.  
  1836. \def\PageHead{% recto/verso running heads
  1837.   \begingroup
  1838.     \ifsp@page
  1839.       \csname ps@\sp@type\endcsname
  1840.       \global\sp@pagefalse
  1841.     \fi
  1842.     \ifodd\pageno
  1843.       \let\the@head=\@oddhead
  1844.     \else
  1845.       \let\the@head=\@evenhead
  1846.     \fi
  1847.     \vbox to \z@{\vskip-22.5\p@%
  1848.       \hbox to \PageWidth{\vbox to8.5\p@{}%
  1849.         \the@head
  1850.       }%
  1851.     \vss}%
  1852.   \endgroup
  1853.   \nointerlineskip
  1854. }
  1855.  
  1856. \def\today{%
  1857.   \number\day\space
  1858.   \ifcase\month\or January\or February\or March\or April\or May\or June\or
  1859.     July\or August\or September\or October\or November\or December\fi
  1860.   \space\number\year%
  1861. }
  1862.  
  1863. \def\PageFoot{} % No page footer as default
  1864.  
  1865. \def\authorcomment#1{%
  1866.   \gdef\PageFoot{%
  1867.     \nointerlineskip%
  1868.     \vbox to 22pt{\vfil%
  1869.       \hbox to \PageWidth{\elevenpoint\noindent \hfil #1 \hfil}}%
  1870.   }%
  1871. }
  1872.  
  1873.  
  1874. % Plate pages
  1875.  
  1876. \newif\ifplate@page
  1877. \newbox\plt@box
  1878.  
  1879. \def\beginplatepage{%
  1880.   \let\plate=\plate@head
  1881.   \let\caption=\fig@caption
  1882.   \global\setbox\plt@box=\vbox\bgroup
  1883.   \TEMPDIMEN=\PageWidth % For \fig@caption test
  1884.   \hsize=\PageWidth\relax
  1885. }
  1886.  
  1887. \def\endplatepage{\par\egroup\global\plate@pagetrue}
  1888. \def\plate@head#1{\gdef\plt@cap{#1}}
  1889.  
  1890. % Letters option
  1891.  
  1892. \def\letters{%
  1893.   \gdef\folio{\ifnum\pageno<\z@ L\romannumeral-\pageno
  1894.     \else L\number\pageno \fi}%
  1895. }
  1896.  
  1897.  
  1898. % Math setup
  1899.  
  1900. % The standard math indentation
  1901. \newdimen\mathindent
  1902.  
  1903. \global\mathindent=\z@
  1904. \global\everydisplay{\global\@dspwd=\displaywidth\displaysetup}
  1905.  
  1906. % New versions of \displaylines, \eqalign, \eqalignno for
  1907. % when non-centered math is in use.
  1908.  
  1909. \def\@displaylines#1{% (for non-centered math)
  1910.   {}$\displ@y\hbox{\vbox{\halign{$\@lign\hfil\displaystyle##\hfil$\crcr
  1911.   #1\crcr}}}${}%
  1912. }
  1913.  
  1914. \def\@eqalign#1{\null\vcenter{\openup\jot\m@th% (for non-centered math)
  1915.   \ialign{\strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil
  1916.       \crcr#1\crcr}}%
  1917. }
  1918.  
  1919. \def\@eqalignno#1{% (for non-centered math)
  1920.   \global\advance\@dspwd by -\mathindent%
  1921.   {}$\displ@y\hbox{\vbox{\halign to\@dspwd%
  1922.   {\hfil$\@lign\displaystyle{##}$\tabskip\z@skip
  1923.   &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering
  1924.   &\llap{$\@lign##$}\tabskip\z@skip\crcr
  1925.   #1\crcr}}}${}%
  1926. }
  1927.  
  1928. % When equations are flushleft ensure, that \displaylines,
  1929. % \eqalign, \eqalignno and \leqalignno point to the new versions of
  1930. % the macros. Also make \leqalignno act like \eqalignno, otherwise the
  1931. % equation text would `crash' into the equation number.
  1932.  
  1933. \global\let\displaylines=\@displaylines
  1934. \global\let\eqalign=\@eqalign
  1935. \global\let\eqalignno=\@eqalignno
  1936. \global\let\leqalignno=\@eqalignno
  1937.  
  1938. \newdimen\@dspwd   \@dspwd=\z@
  1939. \newif\if@eqno
  1940. \newif\if@leqno
  1941. \newtoks\@eqn
  1942. \newtoks\@eq
  1943.  
  1944. \def\displaysetup#1$${\displaytest#1\eqno\eqno\displaytest}
  1945.  
  1946. \def\displaytest#1\eqno#2\eqno#3\displaytest{%
  1947.  \if!#3!\ldisplaytest#1\leqno\leqno\ldisplaytest
  1948.  \else\@eqnotrue\@leqnofalse\@eqn={#2}\@eq={#1}\fi
  1949.  \generaldisplay$$}
  1950.  
  1951. \def\ldisplaytest#1\leqno#2\leqno#3\ldisplaytest{%
  1952. \@eq={#1}%
  1953.  \if!#3!\@eqnofalse\else\@eqnotrue\@leqnotrue
  1954.   \@eqn={#2}\fi}
  1955.  
  1956. \def\generaldisplay{%
  1957.   \if@eqno
  1958.     \if@leqno
  1959.       \hbox to \displaywidth{\noindent
  1960.         \rlap{$\displaystyle\the\@eqn$}%
  1961.         \hskip\mathindent$\displaystyle\the\@eq$\hfil}%
  1962.     \else
  1963.       \hbox to \displaywidth{\noindent
  1964.         \hskip\mathindent
  1965.         $\displaystyle\the\@eq$\hfil$\displaystyle\the\@eqn$}%
  1966.     \fi
  1967.   \else
  1968.     \hbox to \displaywidth{\noindent
  1969.       \hskip\mathindent$\displaystyle\the\@eq$\hfil}%
  1970.   \fi
  1971. }
  1972.  
  1973.  
  1974. % Finishing notice
  1975.  
  1976. \def\@notice{%
  1977.   \par\Two%
  1978.   \noindent{\b@ls{11pt}\ninerm This paper has been produced using the
  1979.     Royal Astronomical Society/Blackwell Science \TeX\ macros.\par}%
  1980. }
  1981.  
  1982. % redefine \bye to output our identification notice :
  1983. \outer\def\bye{\@notice\par\vfill\supereject\end}
  1984.  
  1985.  
  1986. % define a sign on :
  1987.  
  1988. \def\start@mess{%
  1989.   Monthly notices of the RAS journal style (\@typeface)\space
  1990.     v\@version,\space \@verdate.%
  1991. }
  1992.  
  1993. \everyjob{\Warn{\start@mess}}
  1994.  
  1995.  
  1996. % Two-column macros
  1997.  
  1998. %--------------------------------------------------------%
  1999. %                     INITIALISATION                     %
  2000. %--------------------------------------------------------%
  2001.  
  2002. \newif\if@debug \@debugfalse  %  when false, only warnings displayed
  2003.  
  2004. \def\Print#1{\if@debug\immediate\write16{#1}\else \fi}
  2005. \def\Warn#1{\immediate\write16{#1}}
  2006. \def\wlog#1{}
  2007.  
  2008. \newcount\Iteration % temporary loop counter
  2009.  
  2010. \def\Single{0} \def\Double{1}                 % ItemSPAN's
  2011. \def\Figure{0} \def\Table{1}                  % ItemTYPE's
  2012.  
  2013. \def\InStack{0}  % ItemSTATUS
  2014. \def\InZoneA{1}
  2015. \def\InZoneB{2}
  2016. \def\InZoneC{3}
  2017.  
  2018. \newcount\TEMPCOUNT % temporary count register
  2019. \newdimen\TEMPDIMEN % temporary dimen register
  2020. \newbox\TEMPBOX     % temporary box register
  2021. \newbox\VOIDBOX     % a box which is permenately void
  2022.  
  2023. \newcount\LengthOfStack % number of items currently in stack
  2024. \newcount\MaxItems      % maximum number of items allowed in stack
  2025. \newcount\StackPointer
  2026. \newcount\Point         % used in calculation for generating the
  2027.                         % physical address of an item in the stack.
  2028. \newcount\NextFigure    % number of next figure to be output
  2029. \newcount\NextTable     % number of next table to be output
  2030. \newcount\NextItem      % Next item to consider by order in stack
  2031.  
  2032. \newcount\StatusStack   % set to point to top of STATUS stack
  2033. \newcount\NumStack      % set to point to top of NUMBER stack
  2034. \newcount\TypeStack     % set to point to top of TYPE stack
  2035. \newcount\SpanStack     % set to point to top of SPAN stack
  2036. \newcount\BoxStack      % set to point to top of BOX stack
  2037.  
  2038. \newcount\ItemSTATUS    % status of present item
  2039. \newcount\ItemNUMBER    % number of present item
  2040. \newcount\ItemTYPE      % type of present item
  2041. \newcount\ItemSPAN      % span of present item
  2042. \newbox\ItemBOX         % box of present item
  2043. \newdimen\ItemSIZE      % size of present item
  2044.                         % (calculated by GetItemBOX)
  2045.  
  2046. \newdimen\PageHeight    % vertical measure of full page
  2047. \newdimen\TextLeading   % distance between baselines of body text
  2048. \newdimen\Feathering    % amount of interline stretch
  2049. \newcount\LinesPerPage  % height of page in text lines
  2050. \newdimen\ColumnWidth   % width of 1 column of text
  2051. \newdimen\ColumnGap     % size of gap between columns
  2052. \newdimen\PageWidth     % = \ColumnWidth * 2 + \ColumnGap
  2053. \newdimen\BodgeHeight   % Bodge to align figures and tables with text
  2054. \newcount\Leading       % Set to same as \TextLeading above
  2055.  
  2056. \newdimen\ZoneBSize  % size of items in ZoneB
  2057. \newdimen\TextSize   % size of text in ZoneB
  2058. \newbox\ZoneABOX     % contains Zone A material
  2059. \newbox\ZoneBBOX     % contains Zone B material
  2060. \newbox\ZoneCBOX     % contains Zone C material
  2061.  
  2062. \newif\ifFirstSingleItem
  2063. \newif\ifFirstZoneA
  2064. \newif\ifMakePageInComplete
  2065. \newif\ifMoreFigures \MoreFiguresfalse % set true in join stack
  2066. \newif\ifMoreTables  \MoreTablesfalse  % set true in join stack
  2067.  
  2068. \newif\ifFigInZoneB % used to determine in which zone an item
  2069. \newif\ifFigInZoneC % will be placed based on what is in other
  2070. \newif\ifTabInZoneB % zones already for a given page.
  2071. \newif\ifTabInZoneC
  2072.  
  2073. \newif\ifZoneAFullPage
  2074.  
  2075. \newbox\MidBOX    % = LeftBOX+gap+RightBOX
  2076. \newbox\LeftBOX
  2077. \newbox\RightBOX
  2078. \newbox\PageBOX   % complete made-up page
  2079.  
  2080. \newif\ifLeftCOL  % flags first pass through output routine
  2081. \LeftCOLtrue
  2082.  
  2083. \newdimen\ZoneBAdjust
  2084.  
  2085. \newcount\ItemFits
  2086. \def\Yes{1}
  2087. \def\No{2}
  2088.  
  2089. \def\LineAdjust#1{\global\ZoneBAdjust=#1\TextLeading\relax}
  2090.  
  2091.  
  2092. % Setup file.
  2093.  
  2094. \MaxItems=15
  2095. \NextFigure=\z@        % used for article opening
  2096. \NextTable=\@ne
  2097.  
  2098. \BodgeHeight=6pt
  2099. \TextLeading=11pt    % baselineskip of body text
  2100. \Leading=11
  2101. \Feathering=\z@      % amount of interline stretch
  2102. \LinesPerPage=61     % number of text lines per full page -1
  2103. \topskip=\TextLeading
  2104. \ColumnWidth=20pc    % width of text columns
  2105. \ColumnGap=2pc       % gap between columns
  2106.  
  2107. \newskip\ItemSepamount  % space between floats
  2108. \ItemSepamount=\TextLeading plus \TextLeading minus 4pt
  2109.  
  2110. \parskip=\z@ plus .1pt
  2111. \parindent=18pt
  2112. \widowpenalty=\z@
  2113. \clubpenalty=10000
  2114. \tolerance=1500
  2115. \hbadness=1500
  2116. \abovedisplayskip=6pt plus 2pt minus 1pt
  2117. \belowdisplayskip=6pt plus 2pt minus 1pt
  2118. \abovedisplayshortskip=6pt plus 2pt minus 1pt
  2119. \belowdisplayshortskip=6pt plus 2pt minus 1pt
  2120.  
  2121. \frenchspacing
  2122.  
  2123. \ninepoint % start main text size
  2124.  
  2125. \PageHeight=682pt
  2126. \PageWidth=2\ColumnWidth
  2127. \advance\PageWidth by \ColumnGap
  2128.  
  2129. \pagestyle{headings}
  2130.  
  2131.  
  2132. %--------------------------------------------------------%
  2133. %                         STACKS                         %
  2134. %--------------------------------------------------------%
  2135.  
  2136. % THE ITEM STACK
  2137. % The item stack contains contains figures and tables
  2138. % in the order in which they appear in the article source
  2139. % code.
  2140.  
  2141. % allocate stack space
  2142.  
  2143. \newcount\DUMMY \StatusStack=\allocationnumber
  2144. \newcount\DUMMY \newcount\DUMMY \newcount\DUMMY 
  2145. \newcount\DUMMY \newcount\DUMMY \newcount\DUMMY 
  2146. \newcount\DUMMY \newcount\DUMMY \newcount\DUMMY
  2147. \newcount\DUMMY \newcount\DUMMY \newcount\DUMMY 
  2148. \newcount\DUMMY \newcount\DUMMY \newcount\DUMMY
  2149.  
  2150. \newcount\DUMMY \NumStack=\allocationnumber
  2151. \newcount\DUMMY \newcount\DUMMY \newcount\DUMMY 
  2152. \newcount\DUMMY \newcount\DUMMY \newcount\DUMMY 
  2153. \newcount\DUMMY \newcount\DUMMY \newcount\DUMMY 
  2154. \newcount\DUMMY \newcount\DUMMY \newcount\DUMMY 
  2155. \newcount\DUMMY \newcount\DUMMY \newcount\DUMMY
  2156.  
  2157. \newcount\DUMMY \TypeStack=\allocationnumber
  2158. \newcount\DUMMY \newcount\DUMMY \newcount\DUMMY 
  2159. \newcount\DUMMY \newcount\DUMMY \newcount\DUMMY 
  2160. \newcount\DUMMY \newcount\DUMMY \newcount\DUMMY 
  2161. \newcount\DUMMY \newcount\DUMMY \newcount\DUMMY 
  2162. \newcount\DUMMY \newcount\DUMMY \newcount\DUMMY
  2163.  
  2164. \newcount\DUMMY \SpanStack=\allocationnumber
  2165. \newcount\DUMMY \newcount\DUMMY \newcount\DUMMY 
  2166. \newcount\DUMMY \newcount\DUMMY \newcount\DUMMY 
  2167. \newcount\DUMMY \newcount\DUMMY \newcount\DUMMY 
  2168. \newcount\DUMMY \newcount\DUMMY \newcount\DUMMY 
  2169. \newcount\DUMMY \newcount\DUMMY \newcount\DUMMY
  2170.  
  2171. \newbox\DUMMY   \BoxStack=\allocationnumber
  2172. \newbox\DUMMY   \newbox\DUMMY \newbox\DUMMY 
  2173. \newbox\DUMMY   \newbox\DUMMY \newbox\DUMMY 
  2174. \newbox\DUMMY   \newbox\DUMMY \newbox\DUMMY 
  2175. \newbox\DUMMY   \newbox\DUMMY \newbox\DUMMY 
  2176. \newbox\DUMMY   \newbox\DUMMY \newbox\DUMMY
  2177.  
  2178. \def\wlog{\immediate\write\m@ne}
  2179.  
  2180. % \GetItemSTATUS, \GetItemNUMBER, \GetItemTYPE, \GetItemSPAN,
  2181. % \GetItemBox 
  2182. % are used to get details of a particular item from the item
  2183. % stack. The argument to each of these is the items position
  2184. % in the stack (usually \StackPointer)...not the items number.
  2185.  
  2186. \def\GetItemAll#1{%
  2187.  \GetItemSTATUS{#1}
  2188.  \GetItemNUMBER{#1}
  2189.  \GetItemTYPE{#1}
  2190.  \GetItemSPAN{#1}
  2191.  \GetItemBOX{#1}
  2192. }
  2193.  
  2194. % Note: \LeaveStack uses this routine. Do not destroy \Point
  2195. \def\GetItemSTATUS#1{%
  2196.  \Point=\StatusStack
  2197.  \advance\Point by #1
  2198.  \global\ItemSTATUS=\count\Point
  2199. }
  2200.  
  2201. % Note: \LeaveStack uses this routine. Do not destroy \Point
  2202. \def\GetItemNUMBER#1{%
  2203.  \Point=\NumStack
  2204.  \advance\Point by #1
  2205.  \global\ItemNUMBER=\count\Point
  2206. }
  2207.  
  2208. % Note: \LeaveStack uses this routine. Do not destroy \Point
  2209. \def\GetItemTYPE#1{%
  2210.  \Point=\TypeStack
  2211.  \advance\Point by #1
  2212.  \global\ItemTYPE=\count\Point
  2213. }
  2214.  
  2215. % Note: \LeaveStack uses this routine. Do not destroy \Point
  2216. \def\GetItemSPAN#1{%
  2217.  \Point\SpanStack
  2218.  \advance\Point by #1
  2219.  \global\ItemSPAN=\count\Point
  2220. }
  2221.  
  2222. % Note: \LeaveStack uses this routine. Do not destroy \Point
  2223. \def\GetItemBOX#1{%
  2224.  \Point=\BoxStack
  2225.  \advance\Point by #1
  2226.  \global\setbox\ItemBOX=\vbox{\copy\Point}
  2227.  \global\ItemSIZE=\ht\ItemBOX
  2228.  \global\advance\ItemSIZE by \dp\ItemBOX
  2229.  \TEMPCOUNT=\ItemSIZE
  2230.  \divide\TEMPCOUNT by \Leading
  2231.  \divide\TEMPCOUNT by 65536
  2232.  \advance\TEMPCOUNT \@ne
  2233.  \ItemSIZE=\TEMPCOUNT pt
  2234.  \global\multiply\ItemSIZE by \Leading
  2235. }
  2236.  
  2237. % item joins stack
  2238.  
  2239. \def\JoinStack{%
  2240.  \ifnum\LengthOfStack=\MaxItems % stack is full of items
  2241.   \Warn{WARNING: Stack is full...some items will be lost!}
  2242.  \else
  2243.   \Point=\StatusStack
  2244.   \advance\Point by \LengthOfStack
  2245.   \global\count\Point=\ItemSTATUS
  2246.   \Point=\NumStack
  2247.   \advance\Point by \LengthOfStack
  2248.   \global\count\Point=\ItemNUMBER
  2249.   \Point=\TypeStack
  2250.   \advance\Point by \LengthOfStack
  2251.   \global\count\Point=\ItemTYPE
  2252.   \Point\SpanStack
  2253.   \advance\Point by \LengthOfStack
  2254.   \global\count\Point=\ItemSPAN
  2255.   \Point=\BoxStack
  2256.   \advance\Point by \LengthOfStack
  2257.   \global\setbox\Point=\vbox{\copy\ItemBOX}
  2258.   \global\advance\LengthOfStack \@ne
  2259.   \ifnum\ItemTYPE=\Figure % used in \MakePage
  2260.    \global\MoreFigurestrue
  2261.   \else
  2262.    \global\MoreTablestrue
  2263.   \fi
  2264.  \fi
  2265. }
  2266.  
  2267. % item leaves stack
  2268. % #1=physical position of the item to be removed
  2269.  
  2270. \def\LeaveStack#1{%
  2271.  {\Iteration=#1
  2272.  \loop
  2273.  \ifnum\Iteration<\LengthOfStack
  2274.   \advance\Iteration \@ne
  2275.   \GetItemSTATUS{\Iteration}
  2276.    \advance\Point by \m@ne
  2277.    \global\count\Point=\ItemSTATUS
  2278.   \GetItemNUMBER{\Iteration}
  2279.    \advance\Point by \m@ne
  2280.    \global\count\Point=\ItemNUMBER
  2281.   \GetItemTYPE{\Iteration}
  2282.    \advance\Point by \m@ne
  2283.    \global\count\Point=\ItemTYPE
  2284.   \GetItemSPAN{\Iteration}
  2285.    \advance\Point by \m@ne
  2286.    \global\count\Point=\ItemSPAN
  2287.   \GetItemBOX{\Iteration}
  2288.    \advance\Point by \m@ne
  2289.    \global\setbox\Point=\vbox{\copy\ItemBOX}
  2290.  \repeat}
  2291.  \global\advance\LengthOfStack by \m@ne
  2292. }
  2293.  
  2294. % clean stack
  2295. % This routine scans through the stack and removes anything
  2296. % that does not have STATUS=\InStack.
  2297.  
  2298. \newif\ifStackNotClean
  2299.  
  2300. \def\CleanStack{%
  2301.  \StackNotCleantrue
  2302.  {\Iteration=\z@
  2303.   \loop
  2304.    \ifStackNotClean
  2305.     \GetItemSTATUS{\Iteration}
  2306.     \ifnum\ItemSTATUS=\InStack
  2307.      \advance\Iteration \@ne
  2308.      \else
  2309.       \LeaveStack{\Iteration}
  2310.     \fi
  2311.    \ifnum\LengthOfStack<\Iteration
  2312.     \StackNotCleanfalse
  2313.    \fi
  2314.  \repeat}
  2315. }
  2316.  
  2317. % Find item.
  2318. % This macro searches from the top to the bottom of the
  2319. % stack for an item of a specified type and number.
  2320. % #1=type, #2=number
  2321. % If the specified item is found, then \StackPointer is set
  2322. % to point to it, else \StackPointer=-1.
  2323. % This routine is used to find the next figure or table
  2324. % by number.
  2325.  
  2326. \def\FindItem#1#2{%
  2327.  \global\StackPointer=\m@ne % assume item isn't in stack for now
  2328.  {\Iteration=\z@
  2329.   \loop
  2330.   \ifnum\Iteration<\LengthOfStack
  2331.    \GetItemSTATUS{\Iteration}
  2332.    \ifnum\ItemSTATUS=\InStack
  2333.     \GetItemTYPE{\Iteration}
  2334.     \ifnum\ItemTYPE=#1
  2335.      \GetItemNUMBER{\Iteration}
  2336.      \ifnum\ItemNUMBER=#2
  2337.       \global\StackPointer=\Iteration
  2338.       \Iteration=\LengthOfStack % terminate loop
  2339.      \fi
  2340.     \fi
  2341.    \fi
  2342.   \advance\Iteration \@ne
  2343.  \repeat}
  2344. }
  2345.  
  2346. % Find next type
  2347. % This macro searches from the top to the bottom of the stack
  2348. % looking for the first item which has STATUS=\InStack.
  2349. % If it is a figure then a figure is what will be considered
  2350. % next by \MakePage else table.
  2351.  
  2352. \def\FindNext{%
  2353.  \global\StackPointer=\m@ne % assume stack is empty for now
  2354.  {\Iteration=\z@
  2355.   \loop
  2356.   \ifnum\Iteration<\LengthOfStack
  2357.    \GetItemSTATUS{\Iteration}
  2358.    \ifnum\ItemSTATUS=\InStack
  2359.     \GetItemTYPE{\Iteration}
  2360.    \ifnum\ItemTYPE=\Figure
  2361.     \ifMoreFigures
  2362.       \global\NextItem=\Figure
  2363.       \global\StackPointer=\Iteration
  2364.       \Iteration=\LengthOfStack % terminate loop
  2365.     \fi
  2366.    \fi
  2367.    \ifnum\ItemTYPE=\Table
  2368.     \ifMoreTables
  2369.       \global\NextItem=\Table
  2370.       \global\StackPointer=\Iteration
  2371.       \Iteration=\LengthOfStack % terminate loop
  2372.     \fi
  2373.    \fi
  2374.   \fi
  2375.   \advance\Iteration \@ne
  2376.  \repeat}
  2377. }
  2378.  
  2379. % Change status
  2380. % Macro to change the status of a specified item in stack.
  2381. % #1=item, #2=new status
  2382.  
  2383. \def\ChangeStatus#1#2{%
  2384.  \Point=\StatusStack
  2385.  \advance\Point by #1
  2386.  \global\count\Point=#2
  2387. }
  2388.  
  2389.  
  2390. %--------------------------------------------------------%
  2391. %                       MAKEPAGE                         %
  2392. %--------------------------------------------------------%
  2393.  
  2394. % This macro is called at the start of every new page
  2395. % including the first. It scans through the stack picking
  2396. % out items which should be placed on this page. It then
  2397. % leaves space for the items to be placed later. The routine
  2398. % terminates when either there is no room on the page to
  2399. % fit the next figure or table, or there are no more items
  2400. % in the stack.
  2401.  
  2402. \def\Zone{\InZoneA}
  2403.  
  2404. \ZoneBAdjust=\z@
  2405.  
  2406. \def\MakePage{% allocate space on this page for stack items
  2407.  \global\ZoneBSize=\PageHeight
  2408.  \global\TextSize=\ZoneBSize
  2409.  \global\ZoneAFullPagefalse
  2410.  \global\topskip=\TextLeading
  2411.  \MakePageInCompletetrue
  2412.  \MoreFigurestrue
  2413.  \MoreTablestrue
  2414.  \FigInZoneBfalse
  2415.  \FigInZoneCfalse
  2416.  \TabInZoneBfalse
  2417.  \TabInZoneCfalse
  2418.  \global\FirstSingleItemtrue
  2419.  \global\FirstZoneAtrue
  2420.  \global\setbox\ZoneABOX=\box\VOIDBOX
  2421.  \global\setbox\ZoneBBOX=\box\VOIDBOX
  2422.  \global\setbox\ZoneCBOX=\box\VOIDBOX
  2423.  \loop
  2424.   \ifMakePageInComplete
  2425.  \FindNext
  2426.  \ifnum\StackPointer=\m@ne
  2427.   \NextItem=\m@ne
  2428.   \MoreFiguresfalse
  2429.   \MoreTablesfalse
  2430.  \fi
  2431.  \ifnum\NextItem=\Figure
  2432.    \FindItem{\Figure}{\NextFigure}
  2433.    \ifnum\StackPointer=\m@ne \global\MoreFiguresfalse
  2434.    \else
  2435.     \GetItemSPAN{\StackPointer}
  2436.     \ifnum\ItemSPAN=\Single \def\Zone{\InZoneB}\relax
  2437.      \ifFigInZoneC \global\MoreFiguresfalse\fi
  2438.     \else
  2439.      \def\Zone{\InZoneA}
  2440.      \ifFigInZoneB \def\Zone{\InZoneC}\fi
  2441.     \fi
  2442.    \fi
  2443.    \ifMoreFigures\Print{}\FigureItems\fi
  2444.  \fi
  2445. \ifnum\NextItem=\Table
  2446.    \FindItem{\Table}{\NextTable}
  2447.    \ifnum\StackPointer=\m@ne \global\MoreTablesfalse
  2448.    \else
  2449.     \GetItemSPAN{\StackPointer}
  2450.     \ifnum\ItemSPAN=\Single\relax
  2451.      \ifTabInZoneC \global\MoreTablesfalse\fi
  2452.     \else
  2453.      \def\Zone{\InZoneA}
  2454.      \ifTabInZoneB \def\Zone{\InZoneC}\fi
  2455.     \fi
  2456.    \fi
  2457.    \ifMoreTables\Print{}\TableItems\fi
  2458.  \fi
  2459.    \MakePageInCompletefalse % assume page is complete
  2460.    \ifMoreFigures\MakePageInCompletetrue\fi
  2461.    \ifMoreTables\MakePageInCompletetrue\fi
  2462.  \repeat
  2463. %\Print{TextSize=\the\TextSize}
  2464. %\Print{ZoneBSize=\the\ZoneBSize}
  2465.  \ifZoneAFullPage
  2466.   \global\TextSize=\z@
  2467.   \global\ZoneBSize=\z@
  2468.   \global\vsize=\z@\relax
  2469.   \global\topskip=\z@\relax
  2470.   \vbox to \z@{\vss}
  2471.   \eject
  2472.  \else
  2473.  \global\advance\ZoneBSize by -\ZoneBAdjust
  2474.  \global\vsize=\ZoneBSize
  2475.  \global\hsize=\ColumnWidth
  2476.  \global\ZoneBAdjust=\z@
  2477.  \ifdim\TextSize<23pt
  2478.  \Warn{}
  2479.  \Warn{* Making column fall short: TextSize=\the\TextSize *}
  2480.  \vskip-\lastskip\eject\fi
  2481.  \fi
  2482. }
  2483.  
  2484. \def\MakeRightCol{% allocate space for the right column of text
  2485.  \global\TextSize=\ZoneBSize
  2486.  \MakePageInCompletetrue
  2487.  \MoreFigurestrue
  2488.  \MoreTablestrue
  2489.  \global\FirstSingleItemtrue
  2490.  \global\setbox\ZoneBBOX=\box\VOIDBOX
  2491.  \def\Zone{\InZoneB}
  2492.  \loop
  2493.   \ifMakePageInComplete
  2494.  \FindNext
  2495.  \ifnum\StackPointer=\m@ne
  2496.   \NextItem=\m@ne
  2497.   \MoreFiguresfalse
  2498.   \MoreTablesfalse
  2499.  \fi
  2500.  \ifnum\NextItem=\Figure
  2501.    \FindItem{\Figure}{\NextFigure}
  2502.    \ifnum\StackPointer=\m@ne \MoreFiguresfalse
  2503.    \else
  2504.     \GetItemSPAN{\StackPointer}
  2505.     \ifnum\ItemSPAN=\Double\relax
  2506.      \MoreFiguresfalse\fi
  2507.    \fi
  2508.    \ifMoreFigures\Print{}\FigureItems\fi
  2509.  \fi
  2510.  \ifnum\NextItem=\Table
  2511.    \FindItem{\Table}{\NextTable}
  2512.    \ifnum\StackPointer=\m@ne \MoreTablesfalse
  2513.    \else
  2514.     \GetItemSPAN{\StackPointer}
  2515.     \ifnum\ItemSPAN=\Double\relax
  2516.      \MoreTablesfalse\fi
  2517.    \fi
  2518.    \ifMoreTables\Print{}\TableItems\fi
  2519.  \fi
  2520.    \MakePageInCompletefalse % assume page is complete
  2521.    \ifMoreFigures\MakePageInCompletetrue\fi
  2522.    \ifMoreTables\MakePageInCompletetrue\fi
  2523.  \repeat
  2524.  \ifZoneAFullPage
  2525.   \global\TextSize=\z@
  2526.   \global\ZoneBSize=\z@
  2527.   \global\vsize=\z@\relax
  2528.   \global\topskip=\z@\relax
  2529.   \vbox to \z@{\vss}
  2530.   \eject
  2531.  \else
  2532.  \global\vsize=\ZoneBSize
  2533.  \global\hsize=\ColumnWidth
  2534.  \ifdim\TextSize<23pt
  2535.  \Warn{}
  2536.  \Warn{* Making column fall short: TextSize=\the\TextSize *}
  2537.  \vskip-\lastskip\eject\fi
  2538. \fi
  2539. }
  2540.  
  2541. \def\FigureItems{% Stack pointer points to next figure
  2542.  \Print{Considering...}
  2543.  \ShowItem{\StackPointer}
  2544.  \GetItemBOX{\StackPointer} % auto calculates ItemSIZE
  2545.  \GetItemSPAN{\StackPointer}
  2546.   \CheckFitInZone % check to see if item fits
  2547.   \ifnum\ItemFits=\Yes
  2548.    \ifnum\ItemSPAN=\Single
  2549.      \ChangeStatus{\StackPointer}{\InZoneB} % flag to be output
  2550.      \global\FigInZoneBtrue
  2551.      \ifFirstSingleItem
  2552.       \hbox{}\vskip-\BodgeHeight
  2553.      \global\advance\ItemSIZE by \TextLeading
  2554.      \fi
  2555.      \unvbox\ItemBOX\ItemSep
  2556.      \global\FirstSingleItemfalse
  2557.      \global\advance\TextSize by -\ItemSIZE% allocate space
  2558.      \global\advance\TextSize by -\TextLeading
  2559.    \else
  2560.     \ifFirstZoneA
  2561.      \global\advance\ItemSIZE by \TextLeading
  2562.      \global\FirstZoneAfalse\fi
  2563.     \global\advance\TextSize by -\ItemSIZE
  2564.     \global\advance\TextSize by -\TextLeading
  2565.     \global\advance\ZoneBSize by -\ItemSIZE
  2566.     \global\advance\ZoneBSize by -\TextLeading
  2567.     \ifFigInZoneB\relax
  2568.      \else
  2569.      \ifdim\TextSize<3\TextLeading
  2570.      \global\ZoneAFullPagetrue
  2571.      \fi
  2572.     \fi
  2573.     \ChangeStatus{\StackPointer}{\Zone}
  2574.     \ifnum\Zone=\InZoneC \global\FigInZoneCtrue\fi
  2575.   \fi
  2576.    \Print{TextSize=\the\TextSize}
  2577.    \Print{ZoneBSize=\the\ZoneBSize}
  2578.   \global\advance\NextFigure \@ne
  2579.    \Print{This figure has been placed.}
  2580.   \else
  2581.    \Print{No space available for this figure...holding over.}
  2582.    \Print{}
  2583.    \global\MoreFiguresfalse
  2584.   \fi
  2585. }
  2586.  
  2587. \def\TableItems{% Stack pointer points to next table
  2588.  \Print{Considering...}
  2589.  \ShowItem{\StackPointer}
  2590.  \GetItemBOX{\StackPointer} % auto calculates ItemSIZE
  2591.  \GetItemSPAN{\StackPointer}
  2592.   \CheckFitInZone % check to see of item fits in Zone
  2593.   \ifnum\ItemFits=\Yes
  2594.    \ifnum\ItemSPAN=\Single
  2595.     \ChangeStatus{\StackPointer}{\InZoneB}
  2596.      \global\TabInZoneBtrue
  2597.      \ifFirstSingleItem
  2598.       \hbox{}\vskip-\BodgeHeight
  2599.      \global\advance\ItemSIZE by \TextLeading
  2600.      \fi
  2601.      \unvbox\ItemBOX\ItemSep
  2602.      \global\FirstSingleItemfalse
  2603.      \global\advance\TextSize by -\ItemSIZE
  2604.      \global\advance\TextSize by -\TextLeading
  2605.    \else
  2606.     \ifFirstZoneA
  2607.     \global\advance\ItemSIZE by \TextLeading
  2608.     \global\FirstZoneAfalse\fi
  2609.     \global\advance\TextSize by -\ItemSIZE
  2610.     \global\advance\TextSize by -\TextLeading
  2611.     \global\advance\ZoneBSize by -\ItemSIZE
  2612.     \global\advance\ZoneBSize by -\TextLeading
  2613.     \ifFigInZoneB\relax
  2614.      \else
  2615.      \ifdim\TextSize<3\TextLeading
  2616.      \global\ZoneAFullPagetrue
  2617.      \fi
  2618.     \fi
  2619.     \ChangeStatus{\StackPointer}{\Zone}
  2620.     \ifnum\Zone=\InZoneC \global\TabInZoneCtrue\fi
  2621.    \fi
  2622. %   \Print{TextSize=\the\TextSize}
  2623. %   \Print{ZoneBSize=\the\ZoneBSize}
  2624.   \global\advance\NextTable \@ne
  2625.    \Print{This table has been placed.}
  2626.   \else
  2627.   \Print{No space available for this table...holding over.}
  2628.    \Print{}
  2629.    \global\MoreTablesfalse
  2630.   \fi
  2631. }
  2632.  
  2633. % These macros check to see if an item of ItemSIZE will
  2634. % fit in a particular zone. If it will, then ItemFits
  2635. % will be set true else false.
  2636.  
  2637. \def\CheckFitInZone{%
  2638. {\advance\TextSize by -\ItemSIZE
  2639.  \advance\TextSize by -\TextLeading
  2640.  \ifFirstSingleItem
  2641.   \advance\TextSize by \TextLeading
  2642.  \fi
  2643.  \ifnum\Zone=\InZoneA\relax
  2644.   \else \advance\TextSize by -\ZoneBAdjust
  2645.  \fi
  2646.  \ifdim\TextSize<3\TextLeading \global\ItemFits=\No
  2647.  \else \global\ItemFits=\Yes\fi}
  2648. }
  2649.  
  2650. \def\BeginOpening{%
  2651.   % start 9pt a.s.a.p. so that \New.. commands get a chance to init.
  2652.   \ninepoint
  2653.   \thispagestyle{titlepage}%
  2654.   \global\setbox\ItemBOX=\vbox\bgroup%
  2655.     \hsize=\PageWidth%
  2656.     \hrule height \z@
  2657.     \ifsinglecol\vskip 6pt\fi % Bodge, to get same pos. as two-column!
  2658. }
  2659.  
  2660. \let\begintopmatter=\BeginOpening  %  alias for \BeginOpening
  2661.  
  2662. \def\EndOpening{%
  2663.   \One%  1 line fixed space below opening
  2664.   \egroup
  2665.   \ifsinglecol
  2666.     \box\ItemBOX%
  2667.     \vskip\TextLeading plus 2\TextLeading% var. space: min 1, max 3 lines
  2668.     \@noafterindent
  2669.   \else
  2670.     \ItemNUMBER=\z@%
  2671.     \ItemTYPE=\Figure
  2672.     \ItemSPAN=\Double
  2673.     \ItemSTATUS=\InStack
  2674.     \JoinStack
  2675.   \fi
  2676. }
  2677.  
  2678.  
  2679. % Figures
  2680.  
  2681. \newif\if@here  \@herefalse
  2682.  
  2683. \def\no@float{\global\@heretrue}
  2684. \let\nofloat=\relax % only enabled for one column
  2685.  
  2686. \def\beginfigure{%
  2687.   \@ifstar{\global\@dfloattrue \@bfigure}{\global\@dfloatfalse \@bfigure}%
  2688. }
  2689.  
  2690. \def\@bfigure#1{%
  2691.   \par
  2692.   \if@dfloat
  2693.     \ItemSPAN=\Double
  2694.     \TEMPDIMEN=\PageWidth
  2695.   \else
  2696.     \ItemSPAN=\Single
  2697.     \TEMPDIMEN=\ColumnWidth
  2698.   \fi
  2699.   \ifsinglecol
  2700.     \TEMPDIMEN=\PageWidth
  2701.   \else
  2702.     \ItemSTATUS=\InStack
  2703.     \ItemNUMBER=#1%
  2704.     \ItemTYPE=\Figure
  2705.   \fi
  2706.   \bgroup
  2707.     \hsize=\TEMPDIMEN
  2708.     \global\setbox\ItemBOX=\vbox\bgroup
  2709.       \eightpoint\nostb@ls{10pt}%
  2710.       \let\caption=\fig@caption
  2711.       \ifsinglecol \let\nofloat=\no@float\fi
  2712. }
  2713.  
  2714. \def\fig@caption#1{%
  2715.   \vskip 5.5pt plus 6pt%
  2716.   \bgroup % grouping and size change needed for plate pages
  2717.     \eightpoint\nostb@ls{10pt}%
  2718.     \setbox\TEMPBOX=\hbox{#1}%
  2719.     \ifdim\wd\TEMPBOX>\TEMPDIMEN
  2720.       \noindent \unhbox\TEMPBOX\par
  2721.     \else
  2722.       \hbox to \hsize{\hfil\unhbox\TEMPBOX\hfil}%
  2723.     \fi
  2724.   \egroup
  2725. }
  2726.  
  2727. \def\endfigure{%
  2728.   \par\egroup % end \vbox
  2729.   \egroup
  2730.   \ifsinglecol
  2731.     \if@here \midinsert\global\@herefalse\else \topinsert\fi
  2732.       \unvbox\ItemBOX
  2733.     \endinsert
  2734.   \else
  2735.     \JoinStack
  2736.     \Print{Processing source for figure \the\ItemNUMBER}%
  2737.   \fi
  2738. }
  2739.  
  2740.  
  2741. % Tables
  2742.  
  2743. \newbox\tab@cap@box
  2744. \def\tab@caption#1{\global\setbox\tab@cap@box=\hbox{#1\par}}
  2745.  
  2746. \newtoks\tab@txt@toks
  2747. \long\def\tab@txt#1{\global\tab@txt@toks={#1}\global\table@txttrue}
  2748.  
  2749. \newif\iftable@txt  \table@txtfalse
  2750. \newif\if@dfloat    \@dfloatfalse
  2751.  
  2752. \def\begintable{%
  2753.   \@ifstar{\global\@dfloattrue \@btable}{\global\@dfloatfalse \@btable}%
  2754. }
  2755.  
  2756. \def\@btable#1{%
  2757.   \par
  2758.   \if@dfloat
  2759.     \ItemSPAN=\Double
  2760.     \TEMPDIMEN=\PageWidth
  2761.   \else
  2762.     \ItemSPAN=\Single
  2763.     \TEMPDIMEN=\ColumnWidth
  2764.   \fi
  2765.   \ifsinglecol
  2766.     \TEMPDIMEN=\PageWidth
  2767.   \else
  2768.     \ItemSTATUS=\InStack
  2769.     \ItemNUMBER=#1%
  2770.     \ItemTYPE=\Table
  2771.   \fi
  2772.   \bgroup
  2773.     \eightpoint\nostb@ls{10pt}%
  2774.     \global\setbox\ItemBOX=\vbox\bgroup
  2775.       \let\caption=\tab@caption
  2776.       \let\tabletext=\tab@txt
  2777.       \ifsinglecol \let\nofloat=\no@float\fi
  2778. }
  2779.  
  2780. \def\endtable{%
  2781.   \par\egroup % end \vbox
  2782.   \egroup
  2783.   \setbox\TEMPBOX=\hbox to \TEMPDIMEN{%
  2784.     \eightpoint\nostb@ls{10pt}%
  2785.     \hss
  2786.     \vbox{%
  2787.       \hsize=\wd\ItemBOX
  2788.       \ifvoid\tab@cap@box
  2789.       \else
  2790.         \noindent\unhbox\tab@cap@box
  2791.         \vskip 5.5pt plus 6pt%
  2792.       \fi
  2793.       \box\ItemBOX
  2794.       \iftable@txt
  2795.         \vskip 10pt%
  2796.         \noindent\the\tab@txt@toks
  2797.         \global\table@txtfalse
  2798.       \fi
  2799.     }%
  2800.     \hss
  2801.   }%
  2802.   \ifsinglecol
  2803.     \if@here \midinsert\global\@herefalse\else \topinsert\fi
  2804.       \box\TEMPBOX
  2805.     \endinsert
  2806.   \else
  2807.     \global\setbox\ItemBOX=\box\TEMPBOX
  2808.     \JoinStack
  2809.     \Print{Processing source for table \the\ItemNUMBER}%
  2810.   \fi
  2811. }
  2812.  
  2813.  
  2814. \def\UnloadZoneA{%
  2815. \FirstZoneAtrue
  2816.  \Iteration=\z@
  2817.   \loop
  2818.    \ifnum\Iteration<\LengthOfStack
  2819.     \GetItemSTATUS{\Iteration}
  2820.     \ifnum\ItemSTATUS=\InZoneA
  2821.      \GetItemBOX{\Iteration}
  2822.      \ifFirstZoneA \vbox to \BodgeHeight{\vfil}%
  2823.      \FirstZoneAfalse\fi
  2824.      \unvbox\ItemBOX\ItemSep
  2825.      \LeaveStack{\Iteration}
  2826.      \else
  2827.      \advance\Iteration \@ne
  2828.    \fi
  2829.  \repeat
  2830. }
  2831.  
  2832. \def\UnloadZoneC{%
  2833. \Iteration=\z@
  2834.   \loop
  2835.    \ifnum\Iteration<\LengthOfStack
  2836.     \GetItemSTATUS{\Iteration}
  2837.     \ifnum\ItemSTATUS=\InZoneC
  2838.      \GetItemBOX{\Iteration}
  2839.      \ItemSep\unvbox\ItemBOX
  2840.      \LeaveStack{\Iteration}
  2841.      \else
  2842.      \advance\Iteration \@ne
  2843.    \fi
  2844.  \repeat
  2845. }
  2846.  
  2847.  
  2848. %--------------------------------------------------------%
  2849. %                         DIAGNOSTICS                    %
  2850. %--------------------------------------------------------%
  2851.  
  2852. \def\ShowItem#1{% Show details of on item entry in stack
  2853.   {\GetItemAll{#1}
  2854.   \Print{\the#1:
  2855.   {TYPE=\ifnum\ItemTYPE=\Figure Figure\else Table\fi}
  2856.   {NUMBER=\the\ItemNUMBER}
  2857.   {SPAN=\ifnum\ItemSPAN=\Single Single\else Double\fi}
  2858.   {SIZE=\the\ItemSIZE}}}
  2859. }
  2860.  
  2861. \def\ShowStack{% 
  2862.  \Print{}
  2863.  \Print{LengthOfStack = \the\LengthOfStack}
  2864.  \ifnum\LengthOfStack=\z@ \Print{Stack is empty}\fi
  2865.  \Iteration=\z@
  2866.  \loop
  2867.  \ifnum\Iteration<\LengthOfStack
  2868.   \ShowItem{\Iteration}
  2869.   \advance\Iteration \@ne
  2870.  \repeat
  2871. }
  2872.  
  2873. \def\B#1#2{%
  2874. \hbox{\vrule\kern-0.4pt\vbox to #2{%
  2875. \hrule width #1\vfill\hrule}\kern-0.4pt\vrule}
  2876. }
  2877.  
  2878.  
  2879. %-------------------------------------------------------%
  2880. %             SINGLE COLUMN OUTPUT ROUTINE              %
  2881. %-------------------------------------------------------%
  2882.  
  2883. \newif\ifsinglecol   \singlecolfalse
  2884.  
  2885. \def\onecolumn{%
  2886.   \global\output={\singlecoloutput}%
  2887.   \global\hsize=\PageWidth
  2888.   \global\vsize=\PageHeight
  2889.   \global\ColumnWidth=\hsize
  2890.   \global\TextLeading=12pt
  2891.   \global\Leading=12
  2892.   \global\singlecoltrue
  2893.   \global\let\onecolumn=\relax%         stop them using \onecolumn again
  2894.   \global\let\footnote=\sing@footnote%  enable footnotes
  2895.   \global\let\vfootnote=\sing@vfootnote
  2896.   \ninepoint % reset \baselineskip after leading change
  2897.   \message{(Single column)}%
  2898. }
  2899.  
  2900. \def\singlecoloutput{%
  2901.   \shipout\vbox{\PageHead\pagebody\PageFoot}%
  2902.   \advancepageno
  2903. %
  2904.   \ifplate@page
  2905.     \shipout\vbox{%
  2906.       \sp@pagetrue
  2907.       \def\sp@type{plate}%
  2908.       \global\plate@pagefalse
  2909.       \PageHead\vbox to \PageHeight{\unvbox\plt@box\vfil}\PageFoot%
  2910.     }%
  2911.     \message{[plate]}%
  2912.     \advancepageno
  2913.   \fi
  2914. %
  2915.   \ifnum\outputpenalty>-\@MM \else\dosupereject\fi%
  2916. }
  2917.  
  2918. \def\ItemSep{\vskip\ItemSepamount\relax}
  2919.  
  2920. \def\ItemSepbreak{\par\ifdim\lastskip<\ItemSepamount
  2921.   \removelastskip\penalty-200\ItemSep\fi%
  2922. }
  2923.  
  2924. % Modify plain's \endinsert so that the mn's spacing is used
  2925.  
  2926. \let\@@endinsert=\endinsert % save plain's original \endinsert
  2927.  
  2928. \def\endinsert{\egroup % finish the \vbox
  2929.   \if@mid \dimen@\ht\z@ \advance\dimen@\dp\z@ \advance\dimen@12\p@
  2930.     \advance\dimen@\pagetotal \advance\dimen@-\pageshrink
  2931.     \ifdim\dimen@>\pagegoal\@midfalse\p@gefalse\fi\fi
  2932.   \if@mid \ItemSep\box\z@\ItemSepbreak
  2933.   \else\insert\topins{\penalty100 % floating insertion
  2934.     \splittopskip\z@skip
  2935.     \splitmaxdepth\maxdimen \floatingpenalty\z@
  2936.     \ifp@ge \dimen@\dp\z@
  2937.     \vbox to\vsize{\unvbox\z@\kern-\dimen@}% depth is zero
  2938.     \else \box\z@\nobreak\ItemSep\fi}\fi\endgroup%
  2939. }
  2940.  
  2941.  
  2942. % Footnotes (only enabled in single column)
  2943.  
  2944. \def\gobbleone#1{}
  2945. \def\gobbletwo#1#2{}
  2946. \let\footnote=\gobbletwo % Gobble footnote's unless enabled by \onecolumn
  2947. \let\vfootnote=\gobbleone
  2948.  
  2949. \def\sing@footnote#1{\let\@sf\empty % parameter #2 (the text) is read later
  2950.   \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi
  2951.   \hbox{$^{\hbox{\eightpoint #1}}$}\@sf\sing@vfootnote{#1}%
  2952. }
  2953.  
  2954. \def\sing@vfootnote#1{\insert\footins\bgroup\eightpoint\b@ls{9pt}%
  2955.   \interlinepenalty\interfootnotelinepenalty
  2956.   \splittopskip\ht\strutbox % top baseline for broken footnotes
  2957.   \splitmaxdepth\dp\strutbox \floatingpenalty\@MM
  2958.   \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip
  2959.   \noindent $^{\scriptstyle\hbox{#1}}$\hskip 4pt%
  2960.     \footstrut\futurelet\next\fo@t%
  2961. }
  2962.  
  2963. % Kill footnote rule
  2964. \def\footnoterule{\kern-3\p@ \hrule height \z@ \kern 3\p@}
  2965.  
  2966. \skip\footins=19.5pt plus 12pt minus 1pt
  2967. \count\footins=1000
  2968. \dimen\footins=\maxdimen
  2969.  
  2970.  
  2971. % Landscape
  2972.  
  2973. \def\landscape{%
  2974.   \global\TEMPDIMEN=\PageWidth
  2975.   \global\PageWidth=\PageHeight
  2976.   \global\PageHeight=\TEMPDIMEN
  2977.   \global\let\landscape=\relax%         stop them using \landscape again.
  2978.   \onecolumn
  2979.   \message{(landscape)}%
  2980.   \raggedbottom
  2981. }
  2982.  
  2983.  
  2984. %-------------------------------------------------------%
  2985. %               TWO COLUMN OUTPUT ROUTINE               %
  2986. %-------------------------------------------------------%
  2987.  
  2988. \output{%
  2989.   \ifLeftCOL
  2990.     \global\setbox\LeftBOX=\vbox to \ZoneBSize{\box255\unvbox\ZoneBBOX}%
  2991.     \global\LeftCOLfalse
  2992.     \MakeRightCol
  2993.   \else
  2994.     \setbox\RightBOX=\vbox to \ZoneBSize{\box255\unvbox\ZoneBBOX}%
  2995.     \setbox\MidBOX=\hbox{\box\LeftBOX\hskip\ColumnGap\box\RightBOX}%
  2996.     \setbox\PageBOX=\vbox to \PageHeight{%
  2997.       \UnloadZoneA\box\MidBOX\UnloadZoneC}%
  2998.     \shipout\vbox{\PageHead\box\PageBOX\PageFoot}%
  2999.     \advancepageno
  3000. %
  3001.     \ifplate@page
  3002.       \shipout\vbox{%
  3003.         \sp@pagetrue
  3004.         \def\sp@type{plate}%
  3005.         \global\plate@pagefalse
  3006.         \PageHead\vbox to \PageHeight{\unvbox\plt@box\vfil}\PageFoot%
  3007.       }%
  3008.       \message{[plate]}%
  3009.       \advancepageno
  3010.     \fi
  3011. %
  3012.     \global\LeftCOLtrue
  3013.     \CleanStack
  3014.     \MakePage
  3015.   \fi
  3016. }
  3017.  
  3018.  
  3019. % Startup message
  3020.  
  3021. \Warn{\start@mess}
  3022.  
  3023. \newif\ifCUPmtplainloaded % for use in documents
  3024. \ifprod@font
  3025.   \global\CUPmtplainloadedtrue
  3026. \fi
  3027.  
  3028. \def\mnmacrosloaded{} % so articles can see if a format file has been used.
  3029.  
  3030. \catcode `\@=12 % @ signs are non-letters
  3031.  
  3032. % \dump
  3033.  
  3034. % end of mn.tex
  3035.